0

CQRS を理解するために、Command Executor とイベント ソースを持つ小さなアプリケーションを作成しました。私の理解では、ドメイン モデルの変更はコマンドによってトリガーされます。次に、ドメイン モデルはイベントを生成し、デノーマライザーを使用して読み取りモデルを更新します。

しかし、多くの場合、ドメインにとって重要な更新が行われる可能性があります。ユーザーが自分のプロフィール写真を変更するように。このような要件を実装するための最良の方法は何ですか?

ドメインモデル自体は変わらないため、コマンドを使用するのはやり過ぎだと思います。

この質問を検索しようとしましたが、答えが見つかりませんでした...

4

1 に答える 1

2

CQRS と CRUD を混在させないでください。Bounded Context が CQRS に適しているか、そうでないかのいずれかです。あなたのお気に入りのプロジェクトはおそらくそうではありません。ただし、CQRS アーキテクチャ スタイルを適用することに決めたら、それを使い続ける必要があります。

コマンドは簡単です。また、既にイベント ソーシングも使用しているため (これは CQRS の前提条件ではありません)、単一のユース ケースではバイパスしないでください。複数の哲学が整っていると、物事は急速に非常に厄介になります。

読み取りモデルへの直接書き込みに関する限り、読み取りモデルが同期しなくなったり、破損したり、変更が必要になったりして、再構築する必要がある場合はどうなりますか? 関連するイベントがない場合、読み取りモデルは何かが起こったことをどのように知る必要がありますか?

ドメインの動作がない場合に回避できることが 1 つあります。コマンド ハンドラーでトランザクション スクリプト ( POAA ) を使用するだけで、ドメインを呼び出さずにそこからイベントを発行できます。

簡単に言えば、アプリケーションの複数の分離された部分 (つまり、ある BC では CQRS、別の BC では CRUD) でスタイルをうまく混在させることができますが、単一の BC 内では一貫性を保つ必要があります。

于 2012-10-23T05:24:08.440 に答える