2011-12-20 15 views
0

私はドメインのイベントが解決すると思うデザインの質問がありますが、私は正しい方法とドメインのイベントを正しく理解していることを確認する必要があります。DDDでドメインイベントを使用する正しい方法ですか?

別の集約ルートに変更を加える必要がある1つの集約ルートに変更があります。

私は私の開始集約ルートに変更を加えると、私は他の集約ルートの変更を適用するドメインイベントを発生させます。すべてうまくいけば、私は2つのデータベーストランザクションを保持しています。

これで問題が解決しない場合はどうすればよいですか?

これは、すべてが同期的に起こる単一のユーザーシステムであると仮定しているため、2番目の集計が最初に集計を開始する前にコミットされています。

JD

答えて

2

これは、アプリケーションでの作業単位管理の仕組みによって異なります。 Webアプリケーションでは、Unit of Workはすべてのリクエストを作成する必要があります。この場合、通常はhttpリクエスト内に1つのトランザクションがあり、リクエストの終了後にコミットまたはロールバックされます。

もちろん、2つの別々のトランザクションを作成することはできますが、私はあなたのウェブアプリケーション内で行うことはお勧めしません。この場合(もし私がそのような要件を持っていれば)、むしろメッセージングアーキテクチャ(http://www.nservicebus.com/またはhttp://masstransit-project.com/を見てください)

+0

ありがとうございます。 –

+0

私はDDDSampleを見ていて、集約ルーツ間で非同期かつ同期して通信するコードを持っています。私はそれを使うことができると思いますか、あなたが言及したメッセージングアーキテクチャーと一緒に行くべきですか? –

+0

これは要件によって異なります。本質的にメッセージングは​​、非同期通信のもう一つの方法ですが、最も重要なことは、データを失うことなく、簡単に障害を処理できることです – xelibrion