ドメインイベント、イベントハンドラー、ディスパッチャー用のレイヤー

StackOverflow https://stackoverflow.com/questions/3925184

質問

私は読んでいます ドメインイベント UDIの実装からコードを見てきました(http://www.udidahan.com/2009/06/14/domain-events-salvation/)、マイク・ハドロー(http://mikehadlow.blogspot.com/2010/09/separation-ofconcerns-with-domain.html)、ジミー・ボガードとジェイソン・デントラーの実装。

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

私の質問は、これらのコンポーネントをどの層を追加するかです。

バスを使用するつもりはありません すべてのイベントは同期的に処理されます.

私はインターフェースidomainevent、Ieventhandlerが入るべきだと思います project.core 残りのインターフェイスがすべてのプロジェクトによって保持およびアクセスされる場合。

ディスパッチャー(静的クラスです)は project.infrastructure.

ドメインイベントのハンドラー専用の新しいプロジェクトを作成します。まあ言ってみれば Project.EventHandlers.

IOC(structureMap)を使用して、すべてのハンドラーを登録します。

私が見るようにイベント自体はビジネス言語に基づいています、そしてそのために私は行くべきだと思います project.domain すべての集合体が実装されている場合。

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

私の他の混乱はプロジェクトの参照に関するものです。したほうがいい project.domain 参照 project.infrastructure 静的を使用できるように イベントディスパッチャー.

したほうがいい Project.EventHandlers 参照 project.domain どのイベントが処理できるかを知る必要があるためです。

structuremapレジストリクラスを作成する予定です Project.EventHandlers その後、Global.asaxでブートストラップされます。

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

役に立ちましたか?

解決

これらのプロジェクトですか、それとも名前空間ですか?粗い粒子の粗いプロジェクト構造について、古くて継続的な議論があります。私は粗雑なキャンプにいます。アセンブリは、論理レイヤーではなく展開単位であり、説明している構造は、単一のプロジェクトの名前空間としてよりよく達成されます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top