2

私は最近、同僚と議論しました。彼は、ドメイン駆動設計では、エンティティはその状態を変更しない動作を持つべきではないと主張しました。これまでの経験では、この制限について聞いたことがありません。それは有効な DDD ルールですか?

いくつかのコンテキスト (簡略化されたシナリオ) を示すために - 私たちのドメインには、プロセスを開始できるコンピューター エンティティがあり、統合レイヤーは実際にそれをリモートの物理コンピューターに委任し、そこでプロセスを開始します。

では、エンティティStartProcessの動作である必要がありますか? または、エンティティComputerの状態に直接影響しないため、ドメイン サービスに含める必要がありますか? Computer(プロセスが終了すると間接的に状態が変更され、データがシステムに同期されます)。

私にとって、エンティティはユビキタス言語に従っているため、自然な場所ですが、誰かが反対する正当な理由(または他の理由)を持っているかどうか疑問に思っています。

4

1 に答える 1

2

IMOエンティティの動作は状態を変更する必要はありませんが、少なくともイベントを発行する必要があります。この場合、イベントは次のようになりProcessStartedます。CQRS/イベントソーシング ビューは、基本的にコマンド ハンドラーとして集約されます。コマンドを処理し、イベントを発行します。状態は、動作に必要な場合、またはクエリ目的で非正規化された場合に明示されます。

于 2013-04-30T00:02:56.047 に答える