域事件,事件处理程序,调度程序的哪个层

时间:2010-10-13 15:13:43

标签: .net domain-driven-design domain-events

我一直在阅读域事件,并看过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的实施。

总而言之,我喜欢事件的想法。

我的问题是我应该在哪一层添加这些组件。

我不会使用任何总线,所有事件都将以同步方式处理

我想接口IDomainEvent,IEventHandler应该进入 Project.Core ,其中所有项目都保留并访问其余接口。

Dispatcher(这是一个静态类)我认为应该进入 Project.Infrastructure

我将为域事件处理程序创建一个新项目。让我们说 Project.EventHandlers

我将使用IoC(结构图)来注册所有处理程序。

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

请告诉我这是否正确。

我的另一个困惑是项目参考。应该 Project.Domain 引用 Project.Infrastructure ,以便它可以使用静态事件调度程序

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

我计划在 Project.EventHandlers 中创建一个StructureMap注册表类,然后在Global.asax中使用BootStrapped。

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

1 个答案:

答案 0 :(得分:2)

这些项目或名称空间是?有关细粒度的粗粒度项目结构的古老而持续的争论。我在粗粒营地。程序集是部署的一个单元,而不是逻辑层,您描述的结构最好在单个项目中作为名称空间实现。

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