当我有点困惑在使用域中的事件来构建模型读取系统中的流动。特别是,我们如何处理用户期望数据(及其视图)在完成命令时发生更改的事实,但是由于我们的系统体系结构(非阻塞调用发布事件),实际数据库可能不会在页面重新加载?在查看显示的变化使用CQRS和DDD与域事件与ServiceBus
我希望用活动和服务总线CQRS更内嵌移动我们的一个系统的设计。
比方说,我的流转这样:
用户点击查看按钮执行从他们的帐户删除付款方式的任务。
控制器调用PaymentMethodRemovalService并将其传递给accountId & paymentMethodId。
控制器采用AccountRepository检索帐户,并呼吁account.RemovePaymentMethod(ID)
帐户验证可能出现的操作和发布事件PaymentMethodRemovedMessage(帐户,paymentMethodId)
由于事件发布是异步的,我们现在必须从服务器返回并返回控制器视图 - ,但我们的实际数据尚未更新!
处理程序,IHandle < PaymentMethodRemovedMessage>,听到该事件,并从DB
所以消除了实际行,什么是一个人做的?
我可以简单地说,删除显示付款方式的div。这可能适用于AJAX场景,但如果我使用Post-Redirect-Get来支持非JavaScript客户端,该怎么办?然后,我会在我更新之前触发我的Get并从事物的Query侧读取数据。
难道我只是显示一个通知说,他们的要求删除付款方式已提交? (这似乎不友好,对于提交订单是有意义的,但不适用于改变地址)。
有没有办法调和实现变化解耦异步事件和展示反映其电流变化的用户数据?
编辑:我的问题是非常相似CQRS, DDD synching reporting database我不得不说,考虑到那里,也提到了这里的答案,有一点异味,以它的 - 争论的UI显示的更新这是带外与可以这么说,读数据库。我希望有更清洁的东西。