現在CQRSを研究していますが、いくつかのソースコード(GregYoungのSimpleCQRSとMarkNihjofの)が表示されます。私はまだコマンドとドメインイベントと混同しています。ドメインイベントハンドラーで「データベースを書き込む」ために、常にドメインを永続化する必要がありますか?コマンドハンドラーで(通常はドメインリポジトリを介して)ドメインをデータベースに保存するコードを呼び出してから、ドメインイベントハンドラーに他のもの(読み取りモデルの更新や電子メール通知などの他のサービスの実行など)を処理させるのは一般的ですか?ありがとう。
1 に答える
イベントの保存: イベント ハンドラーを使用してイベントを永続化することはありません。コマンド ハンドラーからリポジトリまたは作業単位に委任することは、イベントソーシングを使用する場合のおそらく最も一般的なアプローチです。したがって、コマンド ハンドラーで永続化を行い (まあ、デリゲートします)、イベント ハンドラーに他のことをさせるのが一般的です。
状態の保存: イベントソーシングを使用しない場合、人々は状態の隣にイベントを保存するか、さらに悪いことに、まったく保存しないと思います (永続化メカニズムとしてキューを使用)。それでも、永続化ロジックはコマンド ハンドラのスペースに存在します。
コマンドは意図を捉え、システムに何をすべきかを伝えます。常に命令を使用します。イベントは意図を捉え、システムで何が起こったかを伝えます。常に過去形です。
あなたはこのトピックに不慣れな人だと思います。CQRS の概念を理解するには、http://cqrsinfo.com と http://skillsmatter.com (architecture/ddd) の資料を見るのが一番です。このテーマについてブログを書いている他の人々 (頭の中で): Udi Dahan、Gregory Young、Jonathan Oliver、Rinat Abdullin、Jérémie Chassaing、...