7

境界のあるコンテキストに、相互にいくつかの制約がある2つのアグリゲートがあるとします。DDDを使用すると、これらの集約間制約を同じトランザクションで適用することはできません。つまり、集約境界はトランザクション境界です。

Microsoft CQRSジャーニーで「プロセスマネージャー」と呼ばれるものを使用して、同じ境界コンテキストで2つの集計を調整することを検討しますか、それともプロセスマネージャーは2つの境界コンテキスト間で調整するためにのみ使用されますか?同じ境界コンテキスト内で2つ以上の集約ルートを調整するプロセスマネージャーに相当するものは何でしょうか。

4

1 に答える 1

9

集約ルートは、下位レベルのものではありますが、デフォルトで境界付きコンテキストを定義します(ところで、見つけることができる最低レベルの境界付きコンテキストはオブジェクト、任意のオブジェクトです)。プロセス マネージャーは、サガの代わりに使用された名前です。おそらく、他の名前も思いつくことができます。問題ではありません。それらはすべて同じ目的を持っています。

はい、結果整合性を達成するためにサガを使用することを検討します。実際、これが最善の方法だと思います。これはまさに私が自分のアプリで行っていることです。とにかく、私はメッセージ ドリブン アーキテクチャを使用しており (そうです、ローカルの非分散アプリケーションで)、サービス バスを介して自動的に saga をサポートしています (私自身のもので、まだリリースされていません)。

結果整合性を扱うときに重要なことは、どこでも冪等性を確保することです。つまり、集約ルートは重複操作を拒否する必要があり、もちろんイベント ハンドラーは、同じイベントが複数回発行される可能性があるという事実に対処できる必要があります。ただし、100% の冪等性を保証することはできませんが、非常に近くなる可能性があることに注意してください。

于 2012-11-22T10:37:34.143 に答える