Answers:
我将域事件处理程序放置在应用程序层中。
域事件是一种告诉外部层(或外部世界)域层中发生了某些事情的方法。该事件的处理方式取决于应用程序。应用程序可以通知用户有关更改的信息,也可以调用另一个域来执行某项操作。应用程序负责协调域操作,以响应用户操作,Web请求或域事件。
我将“域事件处理程序”放置在“域”层中作为域接口IDomainEventHandler
。
域事件处理程序的一个示例是订阅某个域事件以初始化新事务的策略(例如:为了触发新域命令),因此将其放在域层是有意义的,因为它与商业逻辑。
我们可以考虑一个示例,在该示例中确认了订单,因此应创建发票请求。我们发生了一件大事OrderConfirmedEvent
。我们域中的策略将负责订阅此事件并创建RequestInvoice
将由命令处理程序处理并由其相应处理的域命令。
如果我们在应用程序层中拥有此事件处理程序,则意味着该应用程序层除了协调用户的操作外,还将执行一些业务逻辑,这似乎是不正确的。
但是我们有