我的公司正在为产品销售创建一个新软件。我们决定将DDD + CQRS基础架构和WPF用于表示层,但我不知道在引发事件时如何通知我的UI。 1)问题: - 操作员单击“注册”按钮以保存订单。 - 我的ViewModel将RegisterOrderCommand发送到命令总线 - “RegisterOrderCommandHandler”管理命令 - 域层中的OrderAggregateRoot注册订单。 - 域事件“RegisterOrderEvent”被发送到事件总线。
如何通知我的UI操作已完成? 我的ViewModel注册一个EventHandler来管理域层中的事件是否正确?
2)问题: 类似于第一个。我有一个想要与我沟通的外部设备。我要把听众放在哪里?在域层,应用层或基础架构层中?
由于
答案 0 :(得分:0)
1)这取决于您发送命令是同步还是异步。在第一种情况下,您可以在try catch块中发送命令,让命令处理程序在命令无效时抛出异常。在第二种情况下,我担心你只有两个选择:
a)假设命令总是成功的
b)创建一个failedevent,它由读取端的事件处理程序处理,并在UI级别处理它。
2)当然不在域层中。我会将监听器放在基础架构层上(与应用程序/业务逻辑无关),我会在Application层中使用该监听器从外部设备获取数据。