web-dev-qa-db-ja.com

MVC WebアプリケーションのDDDアーキテクチャ

私はDDDを使用してWebアプリケーションを組み立てていますが、教科書DDDモデルを実際のMVCアプリケーションに組み込むのに苦労しています。

私は現在これらのレイヤーを持っています:

コントローラー> ViewModelsBuilders>ドメインサービス>アグリゲート、リモートAPIおよびリポジトリ

  • コントローラ
    アクションの結果にはビューモデルが必要です
  • ViewModelsBuilder
    これらは、一連のドメインサービスから必要なビューモデルを構築します。
  • ドメインサービス
    これらは私のドメインへのエントリポイントであり、リモートAPIとリポジトリからデータを渡す(複雑なドメインロジック用の)集約を使用します
  • 集合体とエンティティ
    これらはすべてアセンブリの範囲に限定され、ビジネスロジックが含まれています

質問:

  1. これは正しい構造ですか、ドメインサービスにするか、すべてをまとめるビューモデルビルダーにする必要がありますか?
  2. ドメインサービスから返されるオブジェクトは、これらが単純なDTOまたは実際のエンティティであり、アクセスレベルでメソッドを非表示にする必要がありますか?
  3. ドメインサービスはゲートキーパーである必要がありますか、それともビューモデルビルダーは集約ルート、リポジトリなどにアクセスする必要がありますか?
7
John

MVC&WebAPIプロジェクトに適用できる過去に使用したアプローチは次のとおりです。

  • エンドポイント(Controllers、ApiController)はViewModels(DTO)を返します
  • ビジネス層/アプリケーション層/ドメインサービス-アプリケーションデータを返す
  • データアクセス層-リポジトリパターン-DBモデルエンティティを返します

各層はそれ自身のデータを担当します。

6
Haroon