イベントソーシングを使用して独自のCQRSインフラストラクチャを実装しようとしています。サンプルプロジェクトとして、私はブログエンジンを実装していますが、完璧ではないかもしれませんが、本当のものに取り組んでいきたいと思います。CQRSとイベントソースを使用する際の一意性検証
私が今問題にしたのは、検証です。すべての投稿にshortUrl
があり、shortUrl
は一意である必要がありますが、この確認はどこでドメインに置くべきですか?私は、ポストコマンドの作成やポストコマンドの更新の作成時に有効かどうかを確認するために、私の読者から読んでコマンドを送信する前に、その検証が済むことを知っています。
私は2つの "解決策"を考えることができます。
- は、すべてのブログ関連の設定もすべてのポストへの参照のトラックを保つ
Blog
集計を持っています。しかし、私の目では、このシナリオでの集約間のやりとりと、その固有性を検証する必要があるたびにコミュニケーションを処理する必要があるということが私の目にあります。すべての投稿を作成するには、イベントストアからすべてのイベントを読み込む必要があります。それは複雑に思えます。 - 私が持っているもう1つの選択肢は、イベントが発生し、読み込みモデルを作成するイベントハンドラが、異なる投稿を指し示す2つの短いURLを持つことに気づいたときに、短いURLイベントを発生させることです。エラーを検出したときにイベントを発生させる読み込みモデルを持つことは有効ですか?
これ以上の代替手段はありませんか?私のドメインはcqrsとDDDにとって最適ではないかもしれないことは分かっていますが、小さなドメインで学ぶためにこれをやっています。
参照:http://stackoverflow.com/questions/2916899/how-to-handle-set-based-consistency-validation-in-cqrs –