第一次聽IBM的講師(hi,Derek)講SIMM和SOMA時,還是去年的春天,雖然他著墨不多(據說那時IBM關於SOMA之前的方法論還沒有成體系,不便公開),但還是被Component Business Model吸引。我那個時候是DDD的狂熱愛好者,不像現在這樣對DDD做更多的思考。那個時候,只要跟DDD相關的東西,我都會考慮它跟DDD是不是有著某種神秘的擴充關係。CBM就是這樣被我納入我的關注清單範圍的。
說實話,CBM最初能給我留下印象,主要是 它有著一個明顯的責任層,在我的印象中,在large-scale Structure中使用的DDD中也有一個很明顯的職責層。當然,現在仔細看上去,這兩個東西並不是完成的一致的,但是確實有些隱隱綽綽的關聯的影子。現在我可以負責任的說,我確實也找到了兩者的聯絡。
因為DDD注釋版出版了,我順便去看DDD中文版的書評,DDD是一好書,直到現在很多人仍然是這麼說,在對中文版的翻譯提出若干的質疑後,有人寫道:“喜歡前面的幾章,值對象、實體、aggregate等概念第一次聽說,後面的東西就顯得很空洞了”(大意)。我其實對這種觀點是持反對意見的,作為基礎構造塊,前面提到的概念確實是DDD比較能夠吸引眼球的地方,但是,吸引眼球並不代表它就沒有問題。具體是什麼問題我先壓下不表,我反對這種觀點的更主要的原因是因為後幾章比前幾章精彩得多。
如果你有心讀到《戰略性設計》部分,你就會發現我前面提到的職責分層(Resposibility Layer)是很有實戰意義的。很多人像讀《設計模式》那樣讀DDD,這是錯的。如果你沒有把你的目光從設計轉到領域上,那麼你誤解了Eric了。
回到Component Business Model ,我不想跟人爭辯Business Model 和Domain Model是什麼樣的關係,是一體的還是各自獨立。這沒有什麼意義,我們能夠找到的是它能夠為我們的系統做些什麼,這就足夠了。CBM和DDD的最密切的聯絡,不是在職責分層上,而是在Service上。這也是DDD為什麼會列為SOMA推薦參考資料的主要原因。
今天寫出來的是一個小的結論,其實,我本周(其實可以更早的追溯到我上個周去北京出差參與的那個項目期間)我就在做DDD和CBM之間的關聯探究,探究的過程很有趣,我會在以後的blog中逐漸的放出我的探究過程的。