ドメイン層は、データ転送オブジェクト (DTO) を介して他の層と通信しています。DTOについて混乱しました。
DTO 1 は、ドメインとプレゼンテーション層の間にあります。
DTO 2 は、ドメインとデータ層の間にあります。
レイヤー間に 2 つの異なる DTO オブジェクトを作成するか、DTO を 1 つだけ作成する必要がありますか。プロの道とは?
ドメイン層は、データ転送オブジェクト (DTO) を介して他の層と通信しています。DTOについて混乱しました。
DTO 1 は、ドメインとプレゼンテーション層の間にあります。
DTO 2 は、ドメインとデータ層の間にあります。
レイヤー間に 2 つの異なる DTO オブジェクトを作成するか、DTO を 1 つだけ作成する必要がありますか。プロの道とは?
すべてのレイヤーを見てみましょう:
Domain Entities
通常、ドメイン層について知っています。
DAL は、Domain Entities
またはを返すことができますDTOs (DB oriented data structures)
。これらの DTO またはドメイン エンティティview models
は、必要に応じてプレゼンテーション層 ( ) の DTO を構築するために使用できます。
通常、ドメイン エンティティは重く、データ マッパーまたは任意の ORM が必要です。私は で作業しDomain Entities
、それらをマッピングし、他の DTO を避けることを好みます。それ以外の場合は、DTO もマップする必要があります。
ドメイン層は、エンティティがどこかに (DB などに) 格納されている方法について何も知らないはずです。Introduce Parameter Objectのリファクタリングの結果である独自の DTO を持つことができます。
Data Access Layer
DB からデータをロードDomain Layer
し、そのビジネス ロジックにアクセスしようとしていることを認識している必要があります。
独自の DTO (ビュー モデル) を持つことができます。ビュー モデルは、ドメイン エンティティまたは DB に適した DTO のユーザー インターフェイス フレンドリーな表現です。について知るのはプレゼンテーション層の責任ですview models
。
プレゼンテーションを 1 つだけにする場合は、アプリケーション インフラストラクチャをプレゼンテーション層の一部として実装することもできますが、通常は別のアプリケーション層です。