.net - Domain Events、EventHandlers、Dispatcher 在哪一层

标签 .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 的实现。

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

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

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

我想接口(interface) IDomainEvent 和 IEventHandler 应该放在 Project.Core 中,所有项目都保留并访问其余接口(interface)。

我认为 Dispatcher(这是一个静态类)应该放在 Project.Infrastructure 中。

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

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

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

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

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

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

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

如果之前已经讨论过,请将链接指向我。我在 Google 搜索中找不到。

最佳答案

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

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

关于.net - Domain Events、EventHandlers、Dispatcher 在哪一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3925184/

相关文章:

c# - 与当前连接关联的事务已完成但尚未处理。 (编辑#3)

java - DDD : Delete on a Repository vs delete on an Entity?

c# - 延迟域事件的创建和调度

domain-driven-design - 聚合可以成为域事件的一部分吗?

c# - 为什么 x++-+-++x 合法但 x+++-+++x 不合法?

.net - 在哪里保存应用程序配置

c# - 保存域实体更改

domain-driven-design - CQRS 和同步操作(如用户注册)

c# - 在 TreeViewItem WPF 中设置 SelectionActive

domain-driven-design - 域服务是域模型的一部分吗?