Jef*_*eff 33 nhibernate asp.net-mvc orm 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/
Szy*_*ega 25
请查看我在CodePlex上的DDDsample.Net项目.GUI使用ASP.NET MVC实现,而业务逻辑使用DDD实践,有4种不同的变体:
Pac*_*aco 18
Cqrs使Web项目更容易.在get网站上,所有查询看起来都像"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);
}
}
Run Code Online (Sandbox Code Playgroud)
在命令端,控制器将如下所示:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器只发送一条消息,它不知道消息的去向以及消息的结果.mvc部分的编程非常简单.Cqrs将使编写应用程序的Web部分非常无聊,但您可以通过添加一些帮助用户做出决策的代码(可选地返回ajax使用的json)来使其更有趣.
| 归档时间: |
|
| 查看次数: |
9857 次 |
| 最近记录: |