ドメイン駆動設計への最初のステップを設定し、ブルーブックとすべてを購入しました。特定のソリューションを実装するための3つの方法を見ています。記録のために:私はCQRSまたはイベントソーシングを使用していません。
ユーザーリクエストがアプリケーションサービスレイヤーに入ってきたとします。その要求のビジネスロジックは(何らかの理由で)エンティティ上のメソッドとドメインサービス上のメソッドに分けられます。これらのメソッドを呼び出すにはどうすればよいですか?
これまでに収集したオプションは次のとおりです。
- アプリケーションサービスが両方のメソッドを呼び出すようにします
- メソッドインジェクション/ダブルディスパッチを使用して、ドメインサービスをエンティティにインジェクトし、エンティティに実行させてからドメインサービスのメソッドを呼び出します(または逆に、ドメインサービスがエンティティのメソッドを呼び出すようにします)
- エンティティメソッドでドメインイベントを発生させ、そのハンドラーがドメインサービスを呼び出します。(私が話しているドメインイベントの種類は、http://www.udidahan.com/2009/06/14/domain-events-salvation/です)
これらはすべて実行可能だと思いますが、どちらかを選択することはできません。私はこれについて長い間考えていましたが、3つのセマンティックの違いがもはや見られなくなるまでになりました。何を使うべきかのガイドラインを知っていますか?