《Patterns Of Enterprise Application Architecture》是一本專注在系統平臺面設計議題的書籍,討論如何把能表達出軟體主結構的物件領域模型,橋接至企業層級的開發平臺框架與應用伺服器等。如果你想了解如何調和企業層級應用系統的彈性、延展度、穩定與效能等,本書絕對是必備的經典巨作。

本次書評的主角PEAA,它所涉及的軟體設計議題相當廣泛,而本書內容焦點鎖定在平臺面系統設計的諸多議題,包括分層結構、O-R(Object-Relation)Mapping、WebUI(應用程式的使用介面)的狀態控管、多人同時上線時的交易機制處理、分散式的設計策略等。雖然厚達500多頁,但內容其實並不難理解,Martin Fowler總是能以淺顯的白話表達抽象的主題。

從書名思考核心內容,閱讀你需要的部分

閱讀一本書,通常我會先從書名開始思考,從關鍵字推論內容的架構方向,讓自己心中先有個底之後再去研讀,會比較進入狀況。接著,我建議你先看本書前言與介紹,從前言可以了解作者寫書動機與主要討論議題;而介紹算是導讀,也是各個主題的精要解說,讓讀者能夠依照需求選擇性地閱讀。

本書書名的核心關鍵字有三個:企業應用程式(簡稱企業AP)、架構(Architecture)、模式(Pattern)。

首先,請思考企業AP會有什麼樣的特性,又與一般Web-based AP 有何差異?

我認為大規模的企業AP必須具備:穩定、效能與彈性,三者缺一不可!因為有這些構面的考量,所以在設計議題上要相當慎重嚴謹,對於開發團隊或客戶而言,所謂的整體性架構觀,得建立在雙方的共識上。另一方面,由於構面與涉及的各類設計議題太多,要一切從無到有並不容易,如果前人的設計經驗能夠轉化成「模式」,包括分析、設計乃至於實作,我們便能夠應用在現實開發,減少嘗試次數。

在編排上,本書分為兩大部分,第一部分是作者稱之為「Narratives」的敘述,表達他對某些主題的主觀想法。第二部分是「模式」,作者把每個模式先歸納在某個大類,然後再給予一個名字,彙整成所謂的模式名錄。

前言與介紹的內容相當精彩,Martin Fowler從敘述的過程中,讓讀者了解物件的主要優點在於,使複雜的邏輯易於處理。他認為所謂的企業邏輯(Business Logic),其實最沒有邏輯可言,它是業務人員(Business People)用來贏得商業利益的工具,任何的改變都有可能贏得商業上的交易,而這也意味著,每一次的改變都會導致系統複雜度的提高,因此,企業邏輯無法被套用在任何的邏輯性模式上。

Fowler在談論效能的設計議題,以及對於模式的應用想法時,提出模式的關鍵點在於具體的實踐,是觀察人們於日常生活與工作中,如何發現到某一個特定的解決方案;使用模式的關鍵是不能盲目地套用,因為沒有解決方案是彼此相同的。

設計講求務實,要能調和理想與現實

500多頁的內容,我認為只要研讀第一部分即可。這部分是屬於觀念上的引導,才100頁而已,每一個主題都能分開閱讀,讀起來並不費力。建立平臺面設計議題的相關基礎知識與觀念後,有需要的話,可以再查詢參考第二部分作者所整理的各類模式,例如O-R Mapping的相關設計模式,能讓你知道如何建立Data Mapper的機制,以橋接領域模型的物件與關連式資料庫的表格。

軟體設計必須在理想與現實之間整出一套折衷方案,因為你無法把存在於理想中的模型,直接應用在現實平臺環境。現實環境下,沒有如此大的記憶體可以全部容納活生生的物件,所以需要「冬眠」(Hibernate)到關連式的資料庫內;因為系統資源有限,所以需要控管資源,包括資料庫連線與物件數量等管理;因為Web應用程式的使用介面要服務更多廣眾的Internet用戶,所以被設計為「無狀態」(Stateless),但是企業用戶需要的是「Stateful」服務,如何把Stateless作成像Stateful,考驗著設計者對資源與狀態控管上能否權衡得宜。

Patterns Of Enterprise Application Architecture

Martin Fowler /著

Addison-Wesley Professional出版

售價:64.99美元

Amazon四顆半星

 

作者簡介

王克明

台北工專五專部電子科畢業。現於HSDc軟體設計顧問團隊擔任架構師/顧問/講師。興趣為整體架構性的思考與學習、期貨投機操作與閱讀。

 

相關連結:
軟體設計必讀經典(1)以簡約之道介紹UML最實用的部分
軟體設計必讀經典(2)物件導向分析與設計入門
軟體設計必讀經典(3)洞悉易學難精的Use Case
軟體設計必讀經典(4)知易行難的極致軟體製程
軟體設計必讀經典(5)用科學化方式搞懂設計模式
軟體設計必讀經典(6)RUP活用,也可以是敏捷開發
軟體設計必讀經典(7)重構讓程式回到應有位置
軟體設計必讀經典(8)由生活出發,輕鬆領會物件導向
軟體設計必讀經典(9)優質使用者介面,源自好的狀態圖設計
軟體設計必讀經典(10)幫助SA紮穩UML底子的實務手冊
軟體設計必讀經典(11)反覆測試與修正,讓錯誤消失
軟體設計必讀經典(12)強化結構分析,跨越產業鴻溝
軟體設計必讀經典(13)適合初學者的物件導向聖典
軟體設計必讀經典(14)用塑模技術改造企業

 

熱門新聞

Advertisement