標籤:
最近在研究企業級軟體架構設計,在Chinapub上挑選一番後,出手買下兩本:
《Patterns of Enterprise Application Architecture》,by Martin Fowler
《Microsoft.NET: Architecting Application for the Enterprise》,by Dino Esposito & Andrea Saltarello
Martin Fowler,他的Refactoring,他的UML Distilled,每每讀到他的文字,絕對是醍醐灌頂,竟會讓人產生“執子之手,與子偕老”的衝動。(別想歪了,俺是純爺們,不是gay)
Martin Fowler 和 Kent Beck都是俺很敬重的Agile開發領域的宗師級人物。在開發語言方面,這老哥倆似乎更偏好SmallTalk和Java呀。
那邊廂的Anders Hejlsberg一聽這個准不答應了:咋地,俺家老疙瘩C#就是後娘養的呀?!Anders大叔,別上火,有我一直在跟您混,知足吧!
Anders可是俺最最最最最崇拜的開發語言設計大師呀,不是有那麼句話嗎“生子當如Anders”!
當年Gates可是開著豪華加長大limo明目張胆地去Borland總部挖來的Anders呀
說跑題鳥,趕緊拉回來。
Martin Fowler在江湖上以Fowler立腕(不用Martin想來是為了與另一位敏捷開發大師Robert C. Martin相區別吧)。
Dino Esposito,這位笑面虎一般的Italian Guy還真不是蓋的,ASP.NET方面的大拿,用英語寫出的文字幽默而流暢,這個從前言就看得出來。
Dino Esposito江湖人稱Dino。
雖說Fowler的書通俗易懂得都可以比擬白居易的詩了,但畢竟這是本拿了Jolt大獎的經典著作,題目涵蓋的範圍也夠大,讓俺好生敬畏,愣是沒敢直接下手。
而Dino的書既有Microsoft和.NET的Label,又和Fowler講的是同類問題,想必會容易些吧。那就先拿它入門咯,然後再啃Fowler。
實踐證明,俺的最初判斷也是沒有錯滴。
Dino的前三章對“Architects and Architecture”、“UML Essentials”、“Design Principles and Patterns”都有精彩的講述,選用的代碼也短小精當,閱讀體驗非常好。可是在第四章“The Business Layer”裡一講Domain Model Pattern就讓俺心裡開始犯嘀咕,直到見了Summary的面我也還是一頭霧水:
既然Domain Model是對底層資料封裝和相關操作的高度抽象,可是誰又來對使用者所關心的Business進行建模呢?拿什麼來確保採用了Domain Model Pattern的Business Layer能夠名副其實呀?翻遍了第四章俺也沒找出個答案。
幸好Dino提到了The Business Layer裡用到的模式都是源自Fowler的大作,並標出了各模式在該書中的頁碼。
看來俺只好求助於Fowler大叔了。翻到指定的第116頁,果然是對Domain Model Pattern的描述。不過在翻看目錄時,我發現在前面的第25頁開始專門有一章“Organizing Domain Logic”。既然是個總括,那咱就先從25頁開始看吧。這一看可就看到真東西了。Fowler先強調了一個Service Layer的存在:A common approach in handling domain logic is to split the domain layer in two. A service layer is placed over an underlying domain model or table module...The presentation logic interacts with the domain purely through the Service Layer, which act as an API for the application. 最後又指出:My preference is thus to have the thinnest Service Layer you can, if you even need one. 閱讀至此,先前疑慮煙消雲散,暢快淋漓呀!
再回看Dino的書,第四章“The Business Layer”之後其實就跟上了個第五章“The Service Layer”,裡面也表達了和Fowler相同的意思。雖然從整體來講,Dino沒有遺漏知識點,但謀篇布局中的欠妥當著實讓俺鬱悶了一把。
瑕不掩瑜,Dino的書還是很不錯的,BLL裡其他3個模式:Transaction Script、Table Module和Active Record講的都很明白。
說來說去,還是Fowler同志棋高一招啊。或許當初應該從他下手?who knows!
正所謂:Dino真牛人,Fowler純大師。
向軟體架構大師致敬