我正在创建一个Web CRUD应用程序,该应用程序在处理内部逻辑后将事件发布到其他系统,以更新其数据。
我正处于实现CQRS的第一步,这听起来很奇怪,我必须在一个只有一个“保存”按钮的表单中为用户的所有可能的意图创建特定的命令。这意味着(对于每个属性或值对象)有很多命令来捕获意图,这在我的需求中不是必需的,但在将要订阅该意图的后续项目中却是必需的。我只喜欢在有限范围内进行操作。
要考虑的另一件事:
我必须使用 session 来比较数据是否已更改。保存数据后对其进行伪造将隐藏并发情况,从而在UI中显示错误的数据。
编辑:我刚刚找到this thread,其中Greg Young建议某些屏幕只是CRUD,将更新作为默认行为没有什么不好。
最佳答案
为什么要使用CQRS? 并非在所有情况下都适用。
具体来说,如果您正在使用CRUD,则根本没有理由尝试CQRS。只是不合适。当用户的意图在UI端显式捕获并通过有意义的命令(不是FieldNameUpdated,而是CustomerRelocatedToNewAddress或CustomerAddressCorrected)传递给服务器时,CQRS将从设计中受益匪浅。这要求在设计中使用域驱动设计方法。
关于architecture - CQRS意向命令事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4229367/