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つしかないジェネリックはどうですか?getResult
hasErrorrs
getMessages
DomainService
データとエラーをどのように返す必要がありますか?例外でエラーを返す必要がありますか?Bussines ValidationDomainServices
はビジネスルールの一部であるため、呼び出す必要があるため、これは奇妙に思われます。