我已经阅读有关 命令查询职责分离(CQRS).我不知道怎么会这工作ASP.NET 视?我得到想法的CQRS从概念上讲它听起来不错,肯定不会介绍一些复杂问题(事件和消息模式)相比,"常常"的做法。还想CQRS种反对使用对象在一些方面。我在想我怎么可能使用这种模式在未来的项目,因此如果任何人有经验相结合的CQRS与ASP.NET 视,并请它能够得到一些具体的例子,以帮我更好的理解CQRS和使用ASP.NET 视.谢谢!

更新:我已经去过标记的样本代码。这是一个必须阅读,如果你正在学习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表其中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将使编写应用程序的网络部分很枯燥,但你可以把它更多的乐趣,加入一些代码,帮助用户作出决定(可选返回由AJAX使用JSON)。

其他提示

请看看我的 DDDsample.Net 项目上更.GUI是实施使用ASP.NET 视,同时业务逻辑使用DDD做法在4个不同的变体:

  • 经典(没有CQRS)
  • CQRS它能够与两个关系数据存储
  • CQRS与皇宫SQL在报告侧
  • CQRS与事件的采购指令侧

和看看我的企图在 http://agrcqrs.codeplex.com ,这是ASP .NET MVC + NHibernate的

这里是一个完整的例子,我写了 我CQRS lib Scritchy:

创建你的CQRS应用程序的使用 该Scritchy nuget 是很简单 让你的建立和运行几分钟

在下面的帖子你可能会感兴趣的资源:如何适应CQRS到项目

,我发现特别有趣的一个是 CQRS旅程从微软。它看起来可能令人失望,其与Windows Azure的依赖,但等待......它在SQL Server的一个非常好的执行事件存储和企业服务总线。你会发现有很多的警告您对在生产中使用SQL的执行演示程序源代码注释...但有一些调整,你可以使其适应你的项目。我做到了,和它的作品非常,非常好。

代码是干净的(它是由从微软模式和实践的球员)。你会发现如何使用依赖注入(使用Unity),一个简单而有效的企业服务总线(与SQL Server和ADO.NET,与并行线程),与实体框架和更大量的读取模式一个很好的例子。我从中学到了如何做CQRS和事件采购...请记住:它的所有活动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top