User interface NServicebus/CQRS:如何处理用户界面中的事情?
我一直在读Udi Dahan关于[Command Query separation and SOA][1]的文章。考虑到我将如何在一个我目前正在研究的系统中实际使用它,我提出了一些问题User interface NServicebus/CQRS:如何处理用户界面中的事情?,user-interface,nservicebus,cqrs,User Interface,Nservicebus,Cqrs,我一直在读Udi Dahan关于[Command Query separation and SOA][1]的文章。考虑到我将如何在一个我目前正在研究的系统中实际使用它,我提出了一些问题 一, 考虑以下情况,其中我有一个WPF客户端应用程序,允许用户编辑条目列表: 客户端应用程序已启动。在启动时,它订阅将处理和发布条目更改的命令服务,并查询WCF服务以获取完整的条目列表。收到条目列表后,在等待WCF回复时可能已发布到客户机队列的任何更改(由其他客户机进行)都将合并到列表中 现在对我来说,客户机在
一, 考虑以下情况,其中我有一个WPF客户端应用程序,允许用户编辑条目列表: 客户端应用程序已启动。在启动时,它订阅将处理和发布条目更改的命令服务,并查询WCF服务以获取完整的条目列表。收到条目列表后,在等待WCF回复时可能已发布到客户机队列的任何更改(由其他客户机进行)都将合并到列表中 现在对我来说,客户机在处理负责更改的命令之后立即订阅,并且WCS服务的查询在将相同的更改提交到数据库之前启动的可能性似乎很小。在这种情况下,我的客户机中的数据将不正确,并且永远不会与数据库同步(除非客户机应用程序重新启动)。这个问题真的存在吗?如果存在,应该如何处理
二,。 我的第二个问题是关于如何设计/实现用户界面: 用户现在想要更改列表中的条目;弹出一个窗口,更改数据并按下ok按钮:我们向命令处理程序发送一条消息以处理此更改。 用户希望看到确认(列表中的条目更改)或错误 信息 现在,我可以尝试以“同步”方式处理用户界面中的事情(让用户一次做一件事,让他等待成功或失败,然后再允许他做其他事情),方法如下:
[1] :“命令查询分离和SOA”对于问题1,查询的标准解决方案是创建客户端RPC请求/响应所针对的服务器端持久查询存储 对于第二个问题,答案在很大程度上取决于领域——命令的种类,用户间协作的性质。作为一项首要规则,请考虑如何更改UI和/或命令的数据/处理,以使命令几乎不会失败(除非我们讨论的是恶意用户) 希望有帮助