这是在DDD中使用域事件的正确方法吗?

时间:2011-12-20 13:13:15

标签: domain-driven-design

我有一个设计问题,我认为Domain事件会解决,但我需要确保以正确的方式解决它并且我正确理解域事件。

我对一个聚合根进行了更改,需要在另一个聚合根中进行更改。

因此,当我在启动聚合根目录中进行更改时,我将触发一个域事件,该事件将在其他聚合根中应用更改。如果一切顺利,我有两个数据库事务将被保留。

现在,如果一个失败(比如第二个),我该如何解决这个问题,或者如果第二个问题解决了,但我的启动更改仍然无法继续?

我假设这是一个单一用户系统,其中所有内容都是同步发生的,因此第二个聚合在第一个启动聚合之前提交。

JD

1 个答案:

答案 0 :(得分:2)

这取决于您在应用程序中如何组织工作单元管理。在Web应用程序中,应该在每个请求中创建工作单元,在这种情况下,您通常在http请求中有一个事务,该事务将在请求结束后提交或回滚。

当然,您可以创建两个单独的事务,但我不建议您在Web应用程序中执行此操作。在这种情况下(如果我有这样的要求)宁愿使用消息传递架构(看看http://www.nservicebus.com/http://masstransit-project.com/