我没有明白
我看了CQRS里有一个Repository,功能类似DAO,是和数据库打交道的,没有什么区别 ...
你主要要了解一下DDD领域驱动设计,一两句说不清楚。可在本站多看看其他文章。
我简单说几句,不知你是否能够理解:
DAO是根据需要产生数据对象,今天创建对象A,明天可能有对象B,但是你会发现A和B的字段差不多,又有些同。这样,如果修改相同的字段,两个对象都要修改,修改面扩大,一发动全身,系统难以维护拓展。
而CQRS是围绕反映业务模型的领域模型,如果业务发生变化,直接一个领域模型即可,它相当于老板,老板一改,其他可跟着改。
而在DAO架构下,业务需求一改,先改数据表结构,让围绕数据表的一堆对象都要改。
那么,修改一个领域模型和修改一个数据表结构,表面上修改量是一样的,但是不要忘记,领域模型是代码,而且有方法代码,有些修改完全可以通过方法来实现。
关键是,需求一般是:什么人做什么事产生什么结果,数据表只能记录做了什么事情的结果数据,而不是直接反映了什么事情。需求表达和数据表达之间存在一个翻译。这个翻译环节就增加了信息传播失真,就像多人玩拷贝不走样游戏,最后那人总是无法猜测第一人做的是什么动作。
建议看看老文章:
面向对象与领域建模
数据库已死。
一个是面向对象,一个是面向数据库,中心重点不同。所谓重点中心,就是开发一个软件,第一步从哪里开始,DAO是第一个做数据库,然后有DAO,而CQRS是第一个做领域模型,然后有CQRS。先后不同其实是正反不同一样。
[该贴被banq于2012-12-21 16:45修改过]