我正在尝试学习 CQRS 设计方法(模式和架构)并将其应用于新项目,但似乎缺少关键部分。
我的客户端应用程序执行查询并从读取模型中检索轻量级只读 DTO 列表。用户选择一个项目并单击一个按钮以启动一些操作。该操作是通过创建相应的命令对象并将其发送到写入模型(命令处理程序执行操作、更新数据存储等)来执行的。但是,在某些时候,我需要更新 UI 以反映对由操作产生的应用程序的状态。
UI 如何知道何时刷新原始列表?
附加信息
我注意到大多数讨论 CQRS 的文章/博客在他们的示例中都使用 MVC 客户端应用程序。我现在正在开发 Silverlight 客户端,我开始怀疑这种模式在这种情况下是否行不通。
后续问题
在更多地考虑了 Bartlomiej 的回应和随后的讨论之后,我想知道 CQRS 中的错误处理。鉴于命令基本上是即发即弃的异步操作,我们如何向 UI 报告错误情况?
我看到“刷新 UI”采取以下两种形式之一:
- 操作成功,数据已更改,应更新 UI 以反映这些更改
- 操作失败,数据未更改,但应通知用户失败和潜在的纠正措施。
即使在 MVC 中使用 Post-Redirect-Get 模式,在您知道操作的结果之前,您也无法真正进行重定向。到目前为止,我所看到的例子都没有解决这些现实世界的问题。