DDDの文献を読んで、次のレイヤーを思いつきました。
Applicationアウトサイダーワールド(コントローラ、クローンなど)Application Services(またはUseCases)-複数のドメインサービスまたはインフラストラクチャサービスを調整します。それらはから呼び出されOutside Worldます。彼らは何をしなければならないか知っていますDomain Services-物事がどのように行われるかが含まれています(リポジトリインターフェイスに依存)
質問:レイヤー間で通信するためのベストプラクティスはありますか?
私が知っていること:- Application services公開する「必要なデータ」とトランザクションの「成功」の一部(警告、エラー、情報)をApplication Service返す必要があります- 返すデータは、そこから収集しDomain ServicesたりInfrastructure Services、収集したりする必要があります。
Controller <-> Application Service <-> Domain Service
<-> Infrastructure Service
これらは私の曖昧な考えの一部です:
すべてのメソッドに
Application Serviceは、「リクエスト」をパラメータとして含む特定のDTOが必要ですか?同様にAddItemToCardCommandDto(必要なすべてのデータをカプセル化していること)。and やorのResultObjectようなメソッドが2つしかないジェネリックはどうですか?getResulthasErrorrsgetMessagesDomainServiceデータとエラーをどのように返す必要がありますか?例外でエラーを返す必要がありますか?Bussines ValidationDomainServicesはビジネスルールの一部であるため、呼び出す必要があるため、これは奇妙に思われます。