我有一个 Web 客户端,它调用我的 WCF 业务服务层,而后者又调用外部 WCF 服务来获取实际数据。最初,我认为我会使用 DTO 并在不同的层中有单独的业务实体......但我发现提倡 DTO 的琐碎示例,嗯,琐碎。我看到太多重复的代码,没有太多好处。
考虑我的域:
示例域 我有一个 UI 屏幕(Asp.net MVC 视图),它显示了患者的药物列表、不良反应(药物之间)以及患者可能患有的任何临床状况(如抑郁症或高血压)。我的域模型从顶层开始:
MedicationRecord
List<MedicationProfile> MedicationProfiles
List<AdverseReactions> Reactions
List<ClinicalConditions> ClinicalConditions
MedicationProfile is itself a complex object
string Name
decimal Dosage
Practitioner prescriber
Practioner is itself a complex object
string FirstName
string LastName
PractionerType PractionerType
PractionerId Id
Address Address
etc.
此外,在发出 WCF 请求时,我们有一个请求/响应对象,例如
MedicationRecordResponse
MedicationRecord MedicationRecord
List<ClientMessage> Messages
QueryStatus Status
and again, these other objects are complex objects
(and further, complicates matter is that they exist in a different, common shared namespace)
在这一点上,我的倾向是 MedicationRecordResponse是我的 DTO。但是在纯 DataContracts 和 DTO 以及设计分离中,我应该这样做吗?
MedicationRecordResponseDto
MedicationRecordDto
List<ClientMessageDto>
QueryStatusDto
and that would mean I then need to do
MedicationProfileDto
PractitionerDto
PractitionerTypeDto
AddressDto
etc.
因为我已经在屏幕上显示了几乎所有信息,所以我有效地为我拥有的每个域对象创建了 1 个 DTO。
我的问题是——你会怎么做?你会继续创建所有这些 DTO 吗?或者您只是在单独的程序集中共享您的域模型?
以下是其他似乎相关的问题的一些读物: