[外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。
原文:http://www.infoq.com/interviews/Technology-Influences-DDD#
要實(shí)現(xiàn)DDD(domain drive??design 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))原始意圖,必須CQRS+Event Sourcing。
CQRS+Event Sourcing事實(shí)上不可是一種全新思想。將可能顛覆Java或C#現(xiàn)有的編程體系。
使用傳統(tǒng)JavaEE或Spring + Hibernate這種框架,是無法實(shí)現(xiàn)DDD原始意圖的,這個(gè)DDD創(chuàng)始人Eric Vans已經(jīng)說過:2012年Eric Evans關(guān)于技術(shù)怎樣影響DDD的會(huì)話
提供基于Jdonframework實(shí)現(xiàn)的CQRS?源代碼,ES部分略微拓展一下就可以:Robot.rar。文章見DDD?DCI和領(lǐng)域事件
或者選用新的編程語言Scala,文章:Scala的event-sourced和CQRS案例代碼
有人說,我一定要用Spring來實(shí)現(xiàn),那么會(huì)導(dǎo)致什么后果呢?
由于Spring不支持Domain Event,僅僅能將外部接口直接注入到領(lǐng)域模型。非常多接口會(huì)污染領(lǐng)域模型,最后領(lǐng)域模型還是被外幣接口或架構(gòu)綁架了。
這嚴(yán)重違背DDD中聚合根是語言核心,編程代碼必須反映統(tǒng)一語言
這個(gè)重復(fù)重申的要旨,難道我們重申這個(gè)僅僅是理論喊口號(hào)嗎?假設(shè)它不如此具有顛覆性,我們重復(fù)強(qiáng)調(diào)它干嗎?假設(shè)不是由于如今所謂經(jīng)典做法全然違反這樣的要旨,我們苦口婆心地說它干嗎呢?
當(dāng)然,該P(yáng)PT也去除了Hibernate等ORM注解。由于它也嚴(yán)重綁架干擾了領(lǐng)域模型,干擾領(lǐng)域模型如實(shí)成為統(tǒng)一語言。
所以。雖然Jdon兩年前就在討論DDD?CQRS?ES,而且也推出這種開源框架,這些都是一種探索,是不是代表未來不能確定,可是假設(shè)這是未來。我相信這是JavaEE或Spring必須跟上的,可是Java C#語言本身帶來的限制,還是不如新語言Scala等要優(yōu)雅。
雖然jdonframework使用Disruptor實(shí)現(xiàn)了領(lǐng)域事件,也是通過領(lǐng)域模型的注入實(shí)現(xiàn),雖沒有Scala的Actor那么直接,可是性能和簡(jiǎn)潔不亞于Actor。
假設(shè)各位有意在自己項(xiàng)目中實(shí)施DDD,并且不改用框架,那么出來的效果會(huì)非常差,還不如本文開始批評(píng)的貧血模型,把業(yè)務(wù)方法都放入Service中。
假設(shè)你對(duì)JavaEE認(rèn)識(shí)或面向?qū)ο笤O(shè)計(jì)OO不夠Strong。那么也請(qǐng)不要選擇DDD。你遇到的概念和思路轉(zhuǎn)變不是象學(xué)習(xí)一門語言那么簡(jiǎn)單,項(xiàng)目有風(fēng)險(xiǎn),實(shí)施需慎重。
另外一篇文章可讀 http://www.jdon.com/44491
總結(jié)
以上是生活随笔為你收集整理的[外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET分层登陆——机房收费系统再总结
- 下一篇: centos7 安装图形界面、VNCse