版本: 1.1.0
序言
歡迎閱讀《使用 Microsoft .NET 的企業解決方案模式》。本指南簡要介紹了各種模式,并描述一個按照各種視點和關系對它們進行分類的新組織方法,隨后,本指南討論了其中幾個視點所涉及的 32 種模式,并解釋了如何將它們集成到企業解決方案中。
在構建和生成企業解決方案時,軟件設計人員更多地使用了模式來有效地共享重要的體系結構權衡方法和設計決策。Christopher Alexander 在他的 The Timeless Way of Building 一書中首先用模式來描述體系結構和設計;但是,他的模式是針對城市、建筑物和房屋的。不久,軟件設計人員認識到模式作為一種共享設計經驗的語言所具有的價值。
在過去的十年中,迅速發展的模式社區已經在系統體系結構和軟件開發的許多區域發現了模式。本書包含模式社區持續不斷的工作所獲得的成果,并通過展示如何將模式應用于構建使用 Microsoft® .NET 的軟件密集型系統對它進行了擴展。在早期,客戶、合作伙伴和內部反饋指出應當用一本書來回顧已建立的模式和 Microsoft 的特有模式。因此,這就是本書的宗旨。
本書包括已建立的、與平臺無關的體系結構和設計模式,然后用專門應用于 Microsoft .NET 的實現模式來擴充了這些模式。來自 .NET 開發人員和系統體系結構設計者的早期反饋已經確認模式是共享 .NET 專業知識的寶貴工具。模式為開發人員和體系結構設計者提供一種通用語言,幫助他們在兩個原則之間實現了溝通。本書的作者希望能夠向您證明模式的有用性,并且希望您為日益發展的 .NET 模式社區做出貢獻。在這方面,還有更多的任務需要完成。
本書面向的讀者
本書的大多數讀者屬于以下三類之一:
- 不熟悉模式的體系結構設計者、設計人員和開發人員
- 已經使用模式構建過企業解決方案的體系結構設計者和設計人員
- 架構或設計系統基礎機構的系統體系結構設計者或系統工程師
對于第一組中的讀者,前兩章對于了解為何以及如何使用模式非常重要。這兩章對于理解后四章非常重要,后四章構成模式目錄。您可能會發現您已經實現了其中的一些模式,而并不知道它們是模式。
第二組中的讀者熟悉第 1 章“企業解決方案的構建模式”中的大部分內容。第 2 章“組織模式”介紹了有關 Microsoft 如何組織其模式儲存庫的新資料。您將在第 3 章到第 7 章中熟悉大多數模式;但是,所提供的實現示例應當能夠幫助您將它們應用于 .NET。
最后一組應當閱讀前兩章,并特別注意第 4 章“部署模式”和第 7 章“性能和可靠性模式”。這幾章專門討論直接應用于基礎結構的模式。
本書結構
第 1 章 企業解決方案的構建模式
介紹了模式的概念,并解釋了模式如何記錄經過驗證的簡單機制,最后討論了模式集如何為開發人員和體系結構設計者提供通用語言。為了闡釋這些概念,本章將實際模式的簡化版本應用于實際的開發情形。
第 2 章 組織模式
解釋了模式如何出現在不同的抽象層和各個域之間。本章詳細探討了模式級別,并概括了有助于快速查找相關模式的組織框架。隨后,這一章闡釋了模式如何在不犧牲細節的情況下提供可高效描述復雜解決方案的詞匯。
第 3 章到第 7 章提供了 32 種模式的目錄,它們組合成群集。每一章都首先描述特定群集中的模式如何相關,然后給出如何使用模式的指導。對于實現模式,代碼示例是用 C# 編寫的,并且僅用作示例。示例代碼并非針對生產環境。
第 3 章 Web 表示模式
描述了與構造動態 Web 應用程序相關的設計和實現模式。取決于應用程序的大小和復雜程度,必須做出不同的設計取舍。Web 表示模式群集提供了許多模式替代選項,以闡釋應用程序及其最終利弊的各種類型。
本章節包括以下部分內容
- 模型-視圖-控制器
- 在 ASP.NET 中實現 Model-View-Controller
- 頁面控制器
- 在 ASP.NET 中實現 Page Controller
- 前端控制器
- 在 ASP.NET 中使用 HTTPHandler 實現 Front Controller
- 截取篩選器
- 在 ASP.NET 中使用 HTTP 模塊實現 Intercepting Filter
- 頁面緩存
- 在 ASP.NET 中使用絕對過期實現 Page Cache
- 觀察器
- 在 .NET 中實現 Observer
第 4 章 部署模式
“部署模式”有助于減小應用程序開發小組和系統基礎結構小組之間的交流困難,其方法是指導他們如何以最優方式構造可高效滿足解決方案要求的應用程序和技術基礎結構。模式討論了多個主題,如按邏輯分層組織應用程序、優化分層以提供和使用服務、按物理層組織硬件以及用部署計劃將進程分配給處理器。
本章節包括以下部分內容
第 5 章 分布式系統模式
介紹與分布式系統和服務模式群集都相關的概念,其中包括基于接口的協作和基于服務的協作之間的區別,以及近鏈接和遠鏈接的概念。正如此處定義的那樣,分布式系統模式強調基于實例的協作和近鏈接。
本章節包括以下部分內容
- 代理程序
- 使用服務器激活對象通過 .NET Remoting 實現 Broker
- 使用客戶端激活對象通過 .NET Remoting 實現 Broker
- 數據傳輸對象
- 在 .NET 中使用 DataSet 實現 Data Transfer Object
- 在 .NET 中使用類型化 DataSet 實現 Data Transfer Object
- Singleton
- 在 C# 中實現 Singleton
第 6 章 服務模式
先簡要回顧第 5 章中介紹的協作概念,然后介紹多個強調應用程序和外部服務之間協作的模式。與分布式系統相比,服務模式主要關注使用基于服務的協作由遠鏈接連在一起的系統。
本章節包括以下部分內容
第 7 章 性能和可靠性模式
討論了企業解決方案如何必須確保滿足不可預知數量的用戶的要求,并且通常必須每周工作七天、每天工作 24 小時。盡管可通過多種方法來提高性能和可靠性,但此模式群集主要關注如何組合服務任意數量的應用程序或用戶的多個系統,以提高可伸縮性和可用性。
本章節包括以下部分內容
附錄 A
“Pattlet”提供了本指南所提及的模式的列表,但是并不詳細討論它們。這些模式稱作 pattlet,以便與該目錄中的其余模式區分開來。有關為何使用 pattlet 的詳細信息,請參閱第 2 章“組織模式”。
文檔約定
本指南使用下面的樣式約定和術語。表 1:樣式慣例表
元素 | 含義 |
加粗 字體 | 對象、類、方法、預定義的函數和事件。 |
傾斜 字體 | 本指南中引用的模式和 pattlet 的名稱。第一次出現的新術語也用傾斜字體表示。 |
Monospace 字體 | 代碼示例。 |
注意 | 提示注意補充信息。 |
社區
本指南中的模式屬于 GotDotNet 上的新模式社區。GotDotNet 是在聯機協作開發環境中使用工作區的 Microsoft .NET Framework 社區網站,在這種環境中,.NET 開發人員可以在整個項目生命周期以內創建、托管和管理項目。還可以使用這個模式社區張貼問題、提供反饋或連接其他用戶以共享想法。
可從以下網址訪問模式社區:http://gotdotnet.com/team/architecture/patterns
反饋和支持
本書作者歡迎您就本書內容提供反饋意見。特別是,如果能就下列主題提供任何指導,他們將不勝感激:
- 本指南中提供的信息對您是否有用?
- 本指南中的信息是否按正確的順序提供?它們的詳細程度是否合適?
- 其中的章節是否具有可讀性?是否有趣?
- 總的來說,您如何評價本資料?
請將您的反饋意見發送到以下電子郵件地址:pnppatfb@microsoft.com。請注意,不能通過該地址獲得技術支持;要獲得對 Microsoft 產品和技術的支持,請訪問 http://support.microsoft.com
此處記錄的模式旨在推動企業應用程序的構造和設計。模式是要應用于所面臨問題的簡單機制,它們通常與其他模式結合使用。它們并不是要插入到應用程序中。示例代碼按原樣提供,但并不針對生產環境。它們僅用于闡釋模式,因此其中不包括額外代碼(如異常處理、日志記錄、安全性和驗證)。盡管本資料已經通過測試并且由行家審核過,但我們并不提供象傳統的 Microsoft 產品那樣的支持。
致謝
非常感謝以下顧問為我們提供了寶貴的幫助:- Ward Cunningham, Cunningham & Cunningham, Inc.
- Martin Fowler, ThoughtWorks, Inc.
- Ralph Johnson, University of Illinois at Urbana-Champaign
- Robert C. Martin, Object Mentor
- Mohammad Al-Sabt, Microsoft Prescriptive Architecture Guidance
- Chris Colleran, Colleran.net, LLC
- Matt Evans, Microsoft Prescriptive Architecture Guidance
- Xiao Guo, ThoughtWorks, Inc.
- Steve Kirk, MSDN
- Rick McUmber, RDA
- Vijay Srinivasan, Satyam Computer Services
- Jonathan Wanagel, Microsoft Prescriptive Architecture Guidance
- Atmedica USA, LLC, a MediMedia USA company
- Safeco Insurance Company
- SBI and Company
- ThoughtWorks, Inc.
文章來源于領測軟件測試網 http://www.kjueaiud.com/