asp.net-mvc – 如何用ASP.NET MVC命令查询责任分离(CQRS)?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 如何用ASP.NET MVC命令查询责任分离(CQRS)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在阅读约 Command Query Responsibility Segregation (CQRS).我很奇怪,这将如何与ASP.NET MVC工作?我认为CQRS的概念上听起来不错,肯定会引入一些复杂性(事件和消息模式)相比,“正常/常见”的方法。还有CQRS排序的想法在某些方面反对使用ORM。我试图想如何使用这种模式在未来的项目,如果任何人有结合CQRS与ASP.NET MVC和NHibernate的经验,请给一些具体的例子,以帮助我更好地了解CQRS和使用ASP.NET MVC。谢谢!

更新:
我已经经历了Mark的示例代码。如果你正在学习CQRS,这是必读的。

http://github.com/MarkNijhof/Fohjin

http://cre8ivethought.com/blog/2009/11/12/cqrs–la-greg-young/

http://cre8ivethought.com/blog/2009/11/28/cqrs-trying-to-make-it-re-usable/

解决方法

Cqrs使Web项目更容易。在获取网站,所有的查询将看起来像
“select * from table where id = @id”)。对于那些简单的查询,你不需要像NHiberante这样的orm。你不必使用sql数据库,当你需要时,你可以将你的对象序列化到数据库表,或者使用命名约定。你仍然可以通过NHibernate查询读取的数据库,但是你不会从中获得任何好处,因为所有的查询都是一样的。
public class Controller
{
  public ActionResult Get(Guid id)
  {
     var viewmodel = reportingDatabase.Get(id);
     return View(viewmodel);
  }
}

在命令端,控制器将如下所示:

public class Controller
{
  public ActionResult Post(SomeForm form)
  {
    // do validation
    var command = new SomeCommand(form.Property1,form.Property2);
    bus.Send(command);
    return redirecto(something else);
  }
}

控制器只是发送消息,它不知道消息去往哪里以及消息的结果是什么。这个mvc部分很容易编程。 Cqrs会使写应用程序的Web部分非常无聊,但你可以通过添加一些帮助用户做出决定(可选择返回由jax使用的json)的代码,使它更有趣。

猜你在找的asp.Net相关文章