【发布时间】:2015-12-25 15:42:28
【问题描述】:
请解释为什么在进行 CQRS、ES 和 DDD 时同时修改多个聚合是一个坏主意。有什么情况还是可以的吗?
以 PurgeAllCompletedTodos 等命令为例。我希望此命令通过将 IsActive 设置为 false 来引发一个事件,该事件更新每个已完成的 Todo 聚合的状态。
为什么这样不好?
我能想到的一个原因:
在更新域状态时,最好将事务限制在整个状态中明确定义的部分,以便在更新期间只有这部分需要写锁定。这样做将允许在不同的聚合上并行进行许多写入,这可以在一些极其繁重的情况下提高性能。
【问题讨论】:
-
"事件不可以更新任何域状态吗?"和“为什么将命令和事件限制为 1 个聚合?”对我来说,这似乎是两个独立的、不相关的问题。
-
是的,你是对的。我会修改问题。
-
我已将问题的另一部分移至此处:stackoverflow.com/questions/32823747/…
标签: domain-driven-design cqrs event-sourcing