CQRS, Wpf + UI Refresh

本文关键字:UI Refresh Wpf CQRS | 更新日期: 2023-09-27 18:21:51

我的公司正在创建一个用于产品销售的新软件。我们决定使用DDD+CQRS基础设施和WPF作为表示层,但我不知道当引发事件时如何通知我的UI。1) 问题:-操作员点击"注册"按钮保存订单。-我的ViewModel向命令总线发送RegisterOrderCommand-"RegisterOrderCommandHandler"管理命令-域层中的OrderAggregateRoot注册订单。-域事件"RegisterOrderEvent"被发送到事件总线。

如何通知UI操作已完成?我的ViewModel注册一个EventHandler来管理域层中的事件,这正确吗?

2) 问题:与第一个相似。我有一个外部设备想要与我通信。我必须将听众放在哪里?在域层、应用层还是基础结构层?

感谢

CQRS, Wpf + UI Refresh

1)这取决于您发送的命令是同步还是异步。在第一种情况下,您可以在try-catch块内发送命令,如果命令无效,命令处理程序将抛出异常。在第二种情况下,恐怕你只有两种选择:

a) 假设命令总是成功的

b) 创建一个由事件处理程序从读取端处理的failedevent,并在UI级别进行相应处理。

2) 当然不是在域层。我会将侦听器放在基础结构层(与应用程序/业务逻辑无关),并且在应用程序层中有一个服务,该服务使用该侦听器从外部设备获取数据。