WCFビジネスサービスレイヤーを呼び出す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を作成しますか?または、ドメインモデルを別のアセンブリで共有しますか?
関連性があると思われる他の質問からのいくつかの読み物は次のとおりです。