CQRS中的非域模型更新

时间:2012-10-22 19:36:06

标签: domain-driven-design cqrs

为了理解CQRS,我创建了一个具有Command Executor和事件源的小应用程序。根据我的理解,域模型的变化是通过命令触发的。然后,域模型生成事件以使用非规范化器更新读取模型。

但在许多情况下,可能会有更新对域而言是非平凡的。像用户更改自己的个人资料图片。对于这些要求,实施的最佳方式是什么?

我认为使用命令会过度,因为域模型不会改变。

我试图搜索这个问题,但没找到答案......

1 个答案:

答案 0 :(得分:2)

不要混用CQRS和CRUD。有界上下文适用于CQRS,或者不适用。您的宠物项目可能不是。但是一旦你决定应用CQRS架构风格,你就应该坚持下去。

命令很简单。既然你已经在使用事件采购(这不是CQRS btw的先决条件。)你不应该绕过它用于单个用例。一旦你有多种哲学,事情就会变得非常混乱。

就直接写入Read Model而言:如果您的Read Model不同步,被破坏或必须被修改并且您必须重建它会怎么样?如果没有相关事件,那么阅读模型应该如何知道发生了什么?

如果没有域行为,您可以绕过一件事:您可以在命令处理程序中使用事务脚本(POAA)并从那里发布事件而不调用域。

长话短说:您可以愉快地在应用程序的多个独立部分中混合样式(即BC BC在一个BC中,CRUD在另一个BC中),但在单个BC中,您应保持一致。