我的公司正在开发一款用于产品销售的新软件。我们决定将 DDD+CQRS 基础结构和 WPF 用于表示层,但我不知道在引发事件时如何通知我的 UI。 1)问题: - 运算符(operator)单击“注册”按钮以保存订单。 - 我的 ViewModel 将 RegisterOrderCommand 发送到命令总线 - “RegisterOrderCommandHandler”管理命令 - 域层中的 OrderAggregateRoot 注册订单。 - 域事件“RegisterOrderEvent”被发送到事件总线。
如何通知我的用户界面操作已完成? 我的 ViewModel 注册一个 EventHandler 来管理域层中的事件是否正确?
2)问题: 与第一个类似。我有一个外部设备想要与我通信。我必须在哪里放置听众?在领域层、应用层还是基础设施层?
谢谢
最佳答案
1) 这取决于您发送的命令是同步的还是异步的。在第一种情况下,您可以在 try catch block 中发送命令,让命令处理程序在命令无效时抛出异常。在第二种情况下,恐怕您只有 2 个选择:
a) 假设命令总是成功的
b) 创建一个由读取端的事件处理程序处理的失败事件,并在 UI 级别相应地处理它。
2) 当然不在领域层。我会将监听器放在基础架构层(与应用程序/业务逻辑无关),并且我会在应用程序层中提供一个服务,该服务使用该监听器从外部设备获取数据。
关于c# - CQRS、Wpf + UI 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691522/