0

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

但在许多情况下,可能会有一些对域来说并不重要的更新。就像用户更改自己的个人资料图片一样。对于这样的需求,最好的实现方式是什么?

我相信使用命令将是矫枉过正,因为这样的域模型不会改变。

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

4

1 回答 1

2

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

命令是微不足道的。而且由于您已经在使用事件溯源(顺便说一句,这不是 CQRS 的先决条件。)您不应该在单个用例中绕过它。一旦你有多种理念,事情很快就会变得非常混乱。

就直接写入读取模型而言:如果您的读取模型不同步、损坏或必须修改并且您必须重建它怎么办?如果没有相关事件,Read Model 怎么知道当时发生了什么事?

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

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

于 2012-10-23T05:24:08.440 回答