3

私はドメイン イベントについて読んでおり、Udi の実装 ( http://www.udidahan.com/2009/06/14/domain-events-salvation/ ) や Mike Hadlow ( http://mikehadlow.blogspot. com/2010/09/separation-of-concerns-with-domain.html )、Jimmy Bogard と Jason Dentler の実装。

全体として、私はイベントのアイデアが好きです。

私の質問は、これらのコンポーネントをどのレイヤーに追加する必要があるかです。

BUS を使用するつもりはなく、すべてのイベントは同期方式で処理されます。

インターフェイス IDomainEvent 、 IEventHandler は、残りのインターフェイスが保持され、すべてのプロジェクトからアクセスされるProject.Coreに移動する必要があると思います。

Dispatcher (静的クラス) はProject.Infrastructureに入るべきだと思います。

ドメイン イベントのハンドラー専用の新しいプロジェクトを作成します。Project.EventHandlersとしましょう。

IoC (structuremap) を使用してすべてのハンドラーを登録します。

私が見ているイベント自体はビジネス言語に基づいているため、すべての集計が実装されているProject.Domainに移動する必要があると思います。

これが正しい方法かどうか教えてください。

私の他の混乱は、プロジェクトの参照に関するものです。Project.Domainは、静的なEvent Dispatcherを使用できるようにProject.Infrastructureを参照する必要があります。

Project.EventHandlersはProject.Domainを参照する 必要があります。これは、処理できるイベントが何であるかを知る必要があるためです。

Project.EventHandlersに StructureMap レジストリ クラスを作成し、Global.asax で BootStrapped する予定です。

これが以前に話されている場合は、リンクを教えてください。Google 検索では見つかりませんでした。

4

1 に答える 1

2

これらはプロジェクトですか、それとも名前空間ですか? 細粒度のプロジェクト構造と粗粒度のプロジェクト構造について、古くから進行中の議論があります。私は粗粒キャンプにいます。アセンブリは展開の単位であり、論理レイヤーではありません。記述している構造は、単一のプロジェクトの名前空間としてより適切に実現されます。

そうは言っても、あなたの組織は賢明に見えます。私の唯一の変更点は、Project.Core ではなく、実装と一緒にインターフェイスを配置することです。

于 2010-10-14T07:28:52.053 に答える