DDD專案現在實施的問題
使用傳統JavaEE或Spring + Hibernate這樣的框架,是無法實現DDD原始意圖的,這個DDD創始人Eric Vans已經說過:2012年Eric Evans關於技術如何影響DDD的會話
要實現DDD原始意圖,必須CQRS+Event Sourcing。
提供基於Jdonframework實現的CQRS 原始碼:
為幫助大家更好理解本PPT,用Jdonframework將Match原始碼完整寫成可執行的專案:
Match完整原始碼按這裡
也可以透過打包下載:example.rar
內中含有DCI+CQRS和CQRS+EventSourcing兩種案例。
其他案例:
(1)選用新的程式語言Scala,文章:Scala的event-sourced和CQRS案例程式碼
(2)Axon的Axon-trader案例
有人說,我一定要用Spring來實現,那麼會導致什麼後果呢?
因為Spring不支援Domain Event,只能將外部介面直接注入到領域模型,很多介面會汙染領域模型,最後領域模型還是被外幣介面或架構綁架了,這時被綁架的領域模型就成了扁平的“資料”,而不是活生生的“語言”。
這嚴重違背DDD中聚合根是語言核心,程式設計程式碼必須反映統一語言,這個反覆重申的要旨,難道我們重申這個只是理論喊口號嗎?如果它不如此具有顛覆性,我們反覆強調它幹嗎?如果不是因為現在所謂經典做法完全違反這種要旨,我們苦口婆心地說它幹嗎呢?
當然,該PPT也去除了Hibernate等ORM註解,因為它也嚴重綁架干擾了領域模型,干擾領域模型如實成為統一語言。
所以,儘管Jdon兩年前就在討論DDD CQRS ES,並且也推出這樣的開源框架,這些都是一種探索,是不是代表未來不能確定,但是如果這是未來,我相信這是JavaEE或Spring必須跟上的,但是Java C語言本身帶來的限制,還是不如新語言Scala等要優雅。儘管jdonframework使用Disruptor實現了領域事件,也是透過領域模型的注入實現,雖沒有Scala的Actor那麼直接,但是效能和簡潔不亞於Actor。
如果各位有意在自己專案中實施DDD,而且不改用框架,那麼出來的效果會很差,還不如還是使用本文開始批評的貧血模型,把業務方法都放入Service中。這種號稱SOA架構也就是面向服務的架構很容易將服務做出程式導向的大函式,擴充維護性都很差。
如果你對JavaEE認識或物件導向設計OO不夠Strong,那麼也請不要選擇DDD,你遇到的概念和思路轉變不是象學習一門語言那麼簡單,專案有風險,實施需謹慎。
[該貼被banq於2012-12-19 13:45修改過]
相關文章
- 實施顧問眼中的專案實施(轉)
- 實施DDD的幽默:DDD落地需要專門的框架嗎?框架
- 實施專案問題管理的七步走(轉)
- 專案管理在HIS專案實施中的應用(轉)專案管理
- 實施專案--如何推進專案實施進度
- SAP MM 顧問在實施專案工作中的苦逼和優勢
- 專案實施方案
- DB實施專案
- 關於專案的實施
- 專案在實施 客戶為何抱怨(轉)
- DDD的理解問題
- 淺談團隊管理在IT專案實施中的作用
- 資訊化專案實施過程中14種常見管理問題
- 淺議大型國企實施ERP專案中的問題及對策
- 專案出現的問題記錄
- 專案實施過程
- PLM實施的專案風險清查
- CRM專案成功實施在於循序漸進(轉)
- CRM專案成功實施在於循序漸進 (轉)
- 確保ERP專案實施團隊穩定之乙方問題解析
- 確保ERP專案實施團隊穩定之甲方問題解析
- 實施專案--.NET實現倉庫看板的一些感想
- 實際專案中遇到的問題
- 專案實戰小問題:
- 貪食蛇專案開發出現的問題。
- 關於是否在.net專案中實施領域建模的困惑!
- SaaS專案實施通常存在的風險
- ERP實施的專案管理(轉)專案管理
- 企業專案實施談
- 管理專案風險:考慮你的專案可能出現的問題
- 專案中常問的問題
- 專案實施範圍控制良好的典範 --- D專案
- 專案經理對ERP專案實施的作用(轉)
- 關於在專案中使用spring3的jms出現的問題。Spring
- DDD領域層與基礎設施層迴圈依賴問題
- ERP實施的專案管理(上)(轉)專案管理
- ERP實施的專案管理(下)(轉)專案管理
- 系統整合專案實施的管理(轉)