我正在创建一个Web CRUD应用程序,在处理内部逻辑之后,会将事件发布到其他系统以更新其数据。
我正处于实施CQRS的第一步,听起来很奇怪我必须在一个表单中创建用户所有可能意图的特定命令,其中我只有一个“保存”按钮。这意味着很多命令(对于每个属性或值对象)捕获在我的需求中不需要的意图 ,但在即将投入订阅它的项目中需要。我只是在做我有限的背景所需的粉丝。
另一件要考虑的事情是: 我必须使用session来比较数据是否已经改变。保存数据后伪造数据将隐藏在UI中显示错误数据的并发情况。
编辑:我刚刚找到this thread,其中Greg Young建议某些屏幕只是CRUD,并且将更新作为默认行为没有任何不妥。
答案 0 :(得分:6)
为什么要使用CQRS?它并不适用于所有情况。
具体来说,如果您使用的是CRUD,则可能没有理由尝试使用CQRS。它不适合。当用户的意图在UI端明确捕获并以有意义的命令(不是 FieldNameUpdated ,而是CustomerRelocatedToNewAddress或CustomerAddressCorrected)传递给服务器时,CQRS从设计中获益良多。这需要在设计中使用域驱动设计方法。