DDD:域事件的放置位置

时间:2013-05-14 09:52:27

标签: module domain-driven-design domain-events

我刚读过弗农的书"实施域驱动设计"。我无法找到 来放置您的域名活动

  • 在与聚合相同的命名空间中?
  • 在像<aggregate-namespace>.Events
  • 这样的子模块中
  • 或者hybird:相同的命名空间,但是物理Events子目录

这不是一个大问题,但知道你们有些人做了什么以及如何解决这个问题会很好。

提前致谢!

2 个答案:

答案 0 :(得分:1)

对于我的服务总线消息,我在MainNamespace.Messages的行中有一个单独的程序集(位于C#世界中)。任何需要通过网络传输的域事件也会在该程序集中。

但是,如果您打算将域事件映射到服务总线事件,则域事件可能位于域程序集中。

答案 1 :(得分:0)

我的理解是,域事件应该在域层中(因此,如果使用.NET,则是域项目/程序集)。

域层中的位置取决于您构造项目的方式。有些会进行技术分组,有些会进行汇总分组。

示例(技术分组):

Domain
? Events
   ? InvoiceCreated
? Models
   ? InvoiceModel
? OrderAggregate

示例(按合计逻辑分组)

Domain
? OrderAggregate
   ? OrderAggregate
   ? InvoiceCreated
   ? InvoiceModel

然后在应用程序层中放置域事件处理程序。

Application
? Controllers
? EventHandlers
   ? InvoiceCreatedHandler
? Models
? Views