2011-02-01 4 views
6

対ドメインのイベントを使用するとき、私は、ドメインのイベントとするとき、二重派遣を使用する方法を使用するときと混乱しています。 Udiはドメインイベントを使用してモデルのカプセル化を維持し、貧血から遠ざけることを奨励していますが、ドメインイベントは、操作が実行された後、または操作が進行中ではなく突然終了した後にのみ使用できます。例えばダブルディスパッチ

:私はリポジトリにアクセスする必要があるいくつかのビジネスロジックを解決し、その値に基づいている間、私はドメインイベントを発生させることができます。しかし、問題は、ビジネスロジックを解決する際にモデルがリポジトリにアクセスする方法です。私の意見では、ダブルディスパッチを使用することができます。

上記の文が有効であるかされていない、私に教えてください?

答えて

5

かなり多くのtalking about thisが行われています。

は、私は個人的にSzymon Pobiegaでaggree:親指の

私自身のルールでは、相互作用が一方向にすることができるのIoCの好ましい方法として、(あるUdiでdesscribedとして)ドメインイベントを使用しています。できない場合は、ダブルディスパッチを使用します。例えばのために


- :私は、リポジトリにアクセスする必要があるいくつかのビジネスロジックを解決し、その値に基づいている間、私は、ドメインイベントを発生させることができます。

あなたの集約ルートは、あなたが操作を実行するために必要なものがすべて含まれている必要があります。何かをしている間、リポジトリの必要はありません。集計ルートはトランザクション境界を描画します。

+0

あなたはどのようにあなたがこれを行うだろう、エンティティ内から値を取得するために、外部のWebサービスを呼び出す必要がある場合がありますか?ダブルディスパッチ?エンティティ内で、public void DoSomething(IApplicationServiceサービス){... var rate = service.GetCurrentRate(); ....} – sawe

+0

@saweと同意する私は外部のWebサービスを利用するときのための他の本当の解決策はないと思いますか?ダブルディスパッチは唯一の選択肢のようだ。 –

関連する問題