我刚刚阅读了 Vernon 的书“实现领域驱动设计”。我找不到的是把你的领域事件的类放在哪里。
- 在与您的聚合相同的命名空间中?
- 在像
<aggregate-namespace>.Events
? - 或 hybird:相同的命名空间但物理
Events
子目录
这不是一个大问题,但很高兴知道你们中的一些人做了什么以及结果如何。
提前致谢!
我刚刚阅读了 Vernon 的书“实现领域驱动设计”。我找不到的是把你的领域事件的类放在哪里。
<aggregate-namespace>.Events
?Events
子目录这不是一个大问题,但很高兴知道你们中的一些人做了什么以及结果如何。
提前致谢!
我的理解是域事件应该在域层(如果你使用.NET,那么域项目/程序集)。
领域层的位置取决于您如何构建项目。有些做技术分组,有些做聚合分组)。
示例(技术分组):
Domain
Events
InvoiceCreated
Models
InvoiceModel
OrderAggregate
示例(按聚合进行逻辑分组):
Domain
OrderAggregate
OrderAggregate
InvoiceCreated
InvoiceModel
然后在应用层中放置域事件处理程序。
Application
Controllers
EventHandlers
InvoiceCreatedHandler
Models
Views
对于我的服务总线消息,我有一个单独的程序集(在 C# 世界中)沿着MainNamespace.Messages
. 任何需要通过网络的域事件也将在该程序集中。
但是,如果您打算将域事件映射到服务总线事件,则域事件可能位于域程序集中。