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(结构映射)来注册所有处理程序。

我看到的事件本身是基于商业语言的,因此我认为应该去Project.Domain实现所有聚合。

让我知道这是否是正确的方法。

我的另一个困惑是项目参考。应该Project.Domain引用Project.Infrastructure以便它可以使用静态Event Dispatcher

Project.EventHandlers是否应该引用Project.Domain ,因为它需要知道可以处理哪些事件。

我计划在Project.EventHandlers中创建一个 StructureMap Registry 类,然后在 Global.asax 中引导。

如果之前已经讨论过,请指向我的链接。我无法通过 Google 搜索找到一个。

4

1 回答 1

2

这些是项目还是命名空间?关于细粒度与粗粒度项目结构的争论由来已久。我在粗粒度阵营。程序集是部署单元,而不是逻辑层,您所描述的结构最好在单个项目中作为命名空间来实现。

话虽如此,您的组织看起来很明智。我唯一的改变是将接口放在它们的实现旁边,而不是放在 Project.Core 中。

于 2010-10-14T07:28:52.053 回答