03 2012 档案
摘要:上篇随笔讨论了CQRS中Command的一种基本实现。面对UI中的各种命令,Controller会创建相应的Command对象,然后将其交给CommandBus,由CommandBus统一派发到相应的CommandExecutor中去执行,我们的ICommandBus的接口声明如下:public interface ICommandBus{ void Send<TCommand>(TCommand cmd) where TCommand : ICommand;}当在实际项目中应用CQRS时,我们会发现上面的做法存在一个问题:有时候我们希望Command在执行完后返回一些结果,但上面
阅读全文
摘要:概述继续引用上篇文章中的图片(来源于Udi Dahan博客),UI中的写入操作都将被封装为一个命令中,发送给Domain Model来处理。我们遵循Domain Driven Design的设计思想,因此所有的业务逻辑都只在Domain Model中处理,Command中将不会带有业务逻辑。Command中的代码无非是通过Repository获取某些个聚合根(Aggregate Root),然后将操作委托给相应的领域对象或领域服务来处理,仅此而已。实现实现上,我们会涉及三个东西:(1) Command对象Command对象的作用是用来封装命令数据,所以这类对象以属性为主,少量简单方法,但注意这
阅读全文
摘要:什么是CQRS?这个问题网上可以找到很多资料,未接触过的童鞋请先查看Udi Dahan, Grey Young,Rinat Abdullin,园子里dax.net,以及Jdon社区上的相关文章。例如下面几篇文章:1.http://www.cnblogs.com/daxnet/archive/2011/01/06/1929099.html1.http://www.udidahan.com/2009/12/09/clarified-cqrs/2.http://www.jdon.com/jivejdon/thread/37891这里只通过Udi Dahan的《Clarified CQRS》文章中的一
阅读全文