2011-07-21 23 views
1

我开始使用CQRS,并认为在我的窗体上使用Command对象作为模型是最有意义的。我可以利用一些客户端验证的命令使用DataAnnotations,客户端验证,使它很干净...CQRS命令作为POST动作的模型

我的问题......这是否会引发任何问题?如果我的命令没有默认构造函数,这是否会使这个过程变得不可能?我是否需要创建自己的CommandModelBinder,它可以通过构造函数注入聚合ID?

你的想法,我找不到这个技术,我假设因为它不工作。

回答

3

使用POST将命令发送到域命令处理程序似乎是明智的。但它不太可能是你绑定你的接口的确切对象。界面中的命令(例如鼠标点击)将成为域命令(创建用户)。您的GUI最有可能被绑定到查询的结果。

2

由于您提到的原因,您将创建视图模型,这基本上是您的dto在客户端和服务器之间发送的。这样,您可以使用所有mvc善良,如模型绑定,数据注释等。在您的控制器中,您将创建命令并将命令发送到服务总线。

我认为这会帮助您更好地区分疑虑,并且在我看来这将更容易进行测试。

5

我建议您在基于任务的UI上看看Greg Young的article关于DTO和消息如何与您的系统(客户端和服务器端)进行交互的信息。

我同意塞巴斯蒂安的观点,你的命令将完全匹配你的用户界面。因此,您可能需要具有单独的DTO/Model类和命令。这真的不是什么坏事,因为你的模型真的是你系统查询的结果,并且不应该是你发送到系统中的消息的完全重复。另外,通过保持命令与模型分离,对Command构造函数的关注也随之消失。你的控制器只收集来自客户端的信息,构建命令并提交它。

如果您开始使用CQRS,Greg的网站(cqrsinfo.com)非常好,特别是他的6 1/2 hours video。是的,这是6个半小时,但它真的是一个很好的介绍和概述CQRS的全部内容。它帮了我很大的忙。

希望这会有所帮助!

+1

用于引用Greg的文章+1 –