我有以下架构: OFC。有端口和适配器,以及你能想象到的其他一切......
您有什么建议,如何通过即时一致性发送休息响应?我应该添加另一个事件总线并举办活动吗? (我猜投影必须发一些关于成功的事情。)
如何处理基于事件的系统中的错误? (事件总线不是必需的,我可以解决与IoC容器的松散耦合,但我不认为通过这么多对象发送回调将是一个很好的解决方案。)
答案 0 :(得分:7)
这并不难,您可以直接从控制器调用命令处理程序,而不是发送命令。或者有一个服务方法来处理输入并返回一些东西。重要的是所有这些都是同步完成的(即你需要等到处理程序完成)。域事件处理程序不受影响,它们可以是异步的。
如果您不想使用'混合'并希望始终使用相同的工作流程(如图中所述),事情会更复杂,您需要客户经常检查操作是否已完成。我认为更好的方法是灵活,因此,对于某些任务,您可以使用“旧”方式。域事件仍将生成和处理,该部分不会更改。你只是改变了'命令'的执行方式。
此外,值得一提的是,您不应期待事件处理程序的响应,如果它让您感觉更好,请使用“请求 - 响应”术语而不是命令响应。
顺便说一句,你不会以这种方式破解CQRS,只要你的域模型不用于查询,即你有不同的写入和读取模型,它就是CQRS。
答案 1 :(得分:-1)
立即一致,成本是多少?你在使用DTC吗?
如果您以后希望在读取模型中为给定事件设置多个订户,DTC事务范围中将涉及多少个事务,该怎么办?为了使您具有即时一致性,您的事件需要同步处理,那么这种架构的好处是什么?
您可以通过客户端回调(signalR)实现即时一致性甚至是即时用户通知,但是恕我直言,您应该更改架构中的一些内容,从直接一致性位的删除开始。
为什么你认为你需要那个顺便说一句?