盡管Layers模式的通用性足以應用于諸如網絡協議、平臺軟件和虛擬機之類的領域,但是它無法解決企業類業務解決方案中存在的某些特定問題。例如,除通過分解來管理復雜性(由Layers解決的基本問題)外,業務解決方案開發人員還需要進行適當組織,以便有效地重復使用業務邏輯并保留與昂貴資源(如數據庫)的重要連接。解決此問題的方法之一就是使用Three-Layered Application(三層應用程序)模式。圖4顯示了該模式的簡化說明。
圖4:簡化的Three-Layered Application
同樣,在模式(Three-Layered Application)和模式應用程序(報價應用程序分層模型)之間存在區別。模式是有關應用程序組織主題的通用問題-解決方案對,而模式應用程序是通過創建具體的層來解決非常具體的問題。 模式的優化 Three-Layered Application實際上是在Layers的基礎上進行的簡單優化;在Layers中確定的上下文、影響因素和解決方案仍適用于Three-Layered Application,但反之不行。也就是說,Layers模式約束著Three-Layered Application模式,而Three-Layered Application模式優化了Layers模式。 您為某個發展迅速的成功企業構建了一個報價應用程序,F在,您希望通過向業務合作伙伴公開自己的報價引擎并將其他合作伙伴服務(如配送)集成到該報價應用程序中來擴展該應用程序。您將如何構造自己的業務應用程序以提供和享受服務? 此問題的解決方案之一是通過將其他與服務相關的職責添加到每一層中來擴展Three-Layered Application。在業務層添加了以下職責:通過Service Interfaces(服務接口)向客戶應用程序提供一組簡化的操作。數據訪問層的職責拓寬到了數據庫和主機集成之外,以包括與其他服務提供者的通信。將數據訪問層中的這個附加功能封裝到服務接口組件中,這些組件負責連接到服務(同步和異步)、管理服務的基本會話狀態并向業務流程組件通知與服務相關的重大事件。 Three-Layered Services Application(三層服務應用程序)(圖5)記錄了該問題-解決方案對。 圖5:簡化的Three-Layered Services Application 將Three-Layered Services Application模式應用于報價應用程序示例將形成如下模型。 圖6:應用于報價應用程序的Three-Layered Services Application請注意這些模式之間的關系(請參閱圖7)。Layers引進了一個用來組織軟件應用程序的基本策略。Three-Layered Application優化了此概念,并將它限制在需要重復使用業務邏輯、靈活部署和高效使用連接的業務系統的范圍內。Three-Layered Services Application又在Three-Layered Application的基礎上進行了優化,并對設計進行了擴展,以便在提供和使用其來源千差萬別的數據和邏輯時,將這些數據和邏輯處理為粒狀元素。
圖7:相關模式的優化向特定層中添加其他類型的組件并不是管理這種日益增長的復雜性的唯一方法。正如復雜性所證實的那樣,設計人員通常在應用程序中創建其他層來承擔該職責。例如,一些設計人員將服務接口移到一個單獨的層中。而另外一些設計人員將業務層分隔成域層和應用程序層。在任何情況下,您有時可能會看到某些設計人員在使用此模式來滿足復雜要求時,有時會將這三層擴展到四層、五層或者甚至六層。與之相反,Layers模式也用在相對簡單的客戶端-服務器應用程序中。
解決方案簡述:術語“解決方案”有兩種截然不同的含義:其一是表示模式本身的一部分(如某上下文中包含的問題-解決方案對);其二是表示業務解決方案。在使用“業務解決方案”這一術語時,它是指專用來滿足一組特定的功能和操作業務要求的軟件密集型系統。軟件密集型系統意味著您不只是關心軟件,而且還必須將該軟件部署到硬件處理節點以提供整體的技術解決方案。而且,所考慮的軟件不僅包括自定義開發的軟件,而且包括購買的軟件基礎結構和平臺組件,所有這些都被集成在了一起。
結束語
以.NET為代表的Microsoft產品線向我們展示了“架構為基礎,模式為指導”的企業解決方案設計理念,秉承微軟產品一貫以來的簡單易用以外,同時我們將看到使用.NET構建企業應用平臺上使用.NET的優勢。毫不夸張地說,.NET不是第一個體現架構和模式的軟件應用平臺,卻是目前為止最后的實現了架構和模式的平臺,在隨后的文章介紹中,你將會發現,架構設計和模式應用會是如此簡單。
[1] 《軟件體系結構(影印版)》,科學出版社2004年1月1日出版。Mary Shaw、David Garlan合著,原文書名《Software Architecture: Perspectives on an Emerging Discipline》。
[2] GoF95,《設計模式——可復用面向對象軟件的基礎》,Erich Gamma、Richard Helm等著,英文版本《Design Patterns: Elements of Reusable Object-Oriented Software》,這是設計模式領域的經典之作,它結合設計實例從面向對象的設計中精選出23個設計模式,總結了面向對象設計中最有價值的經驗,并且用簡潔可復用的形式表達出來。
[3] [Buschmann96] Buschmann,Frank,《Pattern-Oriented Software Architecture》,John Wiley & Sons Ltd,1996。中文版《面向模式的軟件體系結構》,2003年1月機械工業出版社出版。
文章來源于領測軟件測試網 http://www.kjueaiud.com/