l Pet Shop3.0的邏輯模型分為三層,如下圖所示:

設計的中心是在表示層使用 ASP.NET Web 窗體,與邏輯中間層中的 C# 業務組件通信。 業務組件繼而通過 ADO.NET 和 SQL Server 名為數據訪問應用塊 (DAAB) (可以從此鏈接了解更多 DAAB 信息并下載完整的 DAAB 源代碼)的幫助器類訪問后端數據庫。 數據訪問功能完全抽象到數據訪問層 (DAL) 中,與業務邏輯層 (BLL) 相分離。 .NET Pet Shop 3.0 中的新穎之處在于,我們為 Oracle 9i 和 SQL Server 2000 數據庫都引入了 DAL 層。 相應 DAL 層的類加載將根據 Web.Config 中的應用程序配置設置在運行時動態生成。注意 .NET Pet Shop 3.0 使用了兩個后端數據庫,定單處理中要涉及跨兩個數據庫的分布式事務。 使用簡單的 Web.Config 應用程序設置,用戶可以對 .Net Pet Shop 進行部署,使用一個或者多個后端數據庫,還可以自由地將 SQL Server 和 Oracle 后端數據庫與由 .NET 服務的組件通過 COM+ 企業服務處理的分布式事務混合。
l 體系結構分層如下圖所示,接著介紹各部分的含義。

組件 |
介紹 |
ASP.NET Web Forms |
ASP.net的WebForm、Code Behide處理、用戶控件、自定義控件和服務器控件等比ASP和JSP FormAction + Html Form的方式在代碼結構上更清晰,代碼更少。 |
User Interface Processing |
用戶狀態和購物車狀態處理。 |
Business Components |
業務邏輯組件。 |
Enterprise Services |
企業服務組件,主要指分布式自動事務處理。 |
DAL Interface |
所有類型數據庫的數據層類必須實現的接口。 |
DAL Factory |
創建某類型的數據訪問層實體的工廠類。 |
Oracle DAL |
針對Oracle數據庫的數據訪問層。 |
Oracle DAAB |
針對Oracle數據庫的DAAB1.0的工具類庫。 |
SQL Server DAL |
針對SQLserver數據庫的數據訪問層。 |
SQL DAAB |
針對SQL server數據庫的DAAB1.0的工具類庫。 |
l 解決方案和資源組織情況如下圖所示,接著介紹各項目的含義。

項目 |
用途 |
BLL |
業務邏輯組件存放之處 |
ConfigTool |
用來加密連接字符串和創建事件日志源的管理應用程序 |
DALFactory |
用來確定加載哪一個數據庫訪問程序集的類 |
IDAL |
每個 DAL 實現都要實現的一組接口 |
Model |
瘦數據類或業務實體 |
OracleDAL |
Oracle 特定的 Pet Shop DAL 實現,使用了 IDAL 接口 |
Post-Build |
運行編譯后操作的項目,比如將程序集添加到 GAC 或 COM+ |
Pre-Build |
將程序集從 GAC 刪除或從 COM+ 注銷程序集的項目 |
SQLServerDAL |
Microsoft SQL Server 特定的 Pet Shop DAL 實現,使用了 IDAL 接口 |
Utility |
一組幫助器類,包括 DPAPI 的封裝 |
Web |
Web 頁和控件 |
Solution Items |
用來構建應用程序的雜項,比如用來簽署應用程序程序集的 Pet Shop.snk 密鑰文件 |
l 物理部署Pet Shop3.0,可以采取如下圖所示的結構:
這里使用網絡負載平衡 (NLB) 或者可能是硬件實現的負載平衡技術將入站的網絡通信量分到了兩臺應用程序服務器上。 在網絡請求達到群集中的一臺機器時,針對該請求的所有工作都會在這臺特定機器上進行。 業務邏輯和數據訪問組件將以程序集的形式安裝在兩臺服務器上,它們本質上是完全相同的。 如果負載平衡軟件配置為使用“Sticky IP”,則每臺服務器都有自己的會話-狀態存儲,因為要保證第二個請求返回到實現第一個請求的那臺服務器。 如果解決方案所需的容錯要求更高,兩臺應用程序服務器可以共享一個公共會話-狀態存儲比如 SQL Server 或者一臺專用的會話服務器(圖中沒有顯示)。 會話-狀態存儲的類型和位置由每個站點‘web.config’文件里‘system.web’元素‘sessionState’子節點中的值決定。