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