Part 4 Pet Shop3.0代碼組織和體系結(jié)構(gòu)
l Pet Shop3.0的邏輯模型分為三層,如下圖所示:
設(shè)計的中心是在表示層使用 ASP.NET Web 窗體,與邏輯中間層中的 C# 業(yè)務(wù)組件通信。 業(yè)務(wù)組件繼而通過 ADO.NET 和 SQL Server 名為數(shù)據(jù)訪問應用塊 (DAAB) (可以從此鏈接了解更多 DAAB 信息并下載完整的 DAAB 源代碼)的幫助器類訪問后端數(shù)據(jù)庫。 數(shù)據(jù)訪問功能完全抽象到數(shù)據(jù)訪問層 (DAL) 中,與業(yè)務(wù)邏輯層 (BLL) 相分離。 .NET Pet Shop 3.0 中的新穎之處在于,我們?yōu)?/SPAN> Oracle 9i 和 SQL Server 2000 數(shù)據(jù)庫都引入了 DAL 層。 相應 DAL 層的類加載將根據(jù) Web.Config 中的應用程序配置設(shè)置在運行時動態(tài)生成。注意 .NET Pet Shop 3.0 使用了兩個后端數(shù)據(jù)庫,定單處理中要涉及跨兩個數(shù)據(jù)庫的分布式事務(wù)。 使用簡單的 Web.Config 應用程序設(shè)置,用戶可以對 .Net Pet Shop 進行部署,使用一個或者多個后端數(shù)據(jù)庫,還可以自由地將 SQL Server 和 Oracle 后端數(shù)據(jù)庫與由 .NET 服務(wù)的組件通過 COM+ 企業(yè)服務(wù)處理的分布式事務(wù)混合。
l 體系結(jié)構(gòu)分層如下圖所示,接著介紹各部分的含義。
組件 |
介紹 |
ASP.NET Web Forms |
ASP.net的WebForm、Code Behide處理、用戶控件、自定義控件和服務(wù)器控件等比ASP和JSP FormAction + Html Form的方式在代碼結(jié)構(gòu)上更清晰,代碼更少。 |
User Interface Processing |
用戶狀態(tài)和購物車狀態(tài)處理。 |
Business Components |
業(yè)務(wù)邏輯組件。 |
Enterprise Services |
企業(yè)服務(wù)組件,主要指分布式自動事務(wù)處理。 |
DAL Interface |
所有類型數(shù)據(jù)庫的數(shù)據(jù)層類必須實現(xiàn)的接口。 |
DAL Factory |
創(chuàng)建某類型的數(shù)據(jù)訪問層實體的工廠類。 |
Oracle DAL |
針對Oracle數(shù)據(jù)庫的數(shù)據(jù)訪問層。 |
Oracle DAAB |
針對Oracle數(shù)據(jù)庫的DAAB1.0的工具類庫。 |
SQL Server DAL |
針對SQLserver數(shù)據(jù)庫的數(shù)據(jù)訪問層。 |
SQL DAAB |
針對SQL server數(shù)據(jù)庫的DAAB1.0的工具類庫。 |
l 解決方案和資源組織情況如下圖所示,接著介紹各項目的含義。
項目 |
用途 |
BLL |
業(yè)務(wù)邏輯組件存放之處 |
ConfigTool |
用來加密連接字符串和創(chuàng)建事件日志源的管理應用程序 |
DALFactory |
用來確定加載哪一個數(shù)據(jù)庫訪問程序集的類 |
IDAL |
每個 DAL 實現(xiàn)都要實現(xiàn)的一組接口 |
Model |
瘦數(shù)據(jù)類或業(yè)務(wù)實體 |
OracleDAL |
Oracle 特定的 Pet Shop DAL 實現(xiàn),使用了 IDAL 接口 |
Post-Build |
運行編譯后操作的項目,比如將程序集添加到 GAC 或 COM+ |
Pre-Build |
將程序集從 GAC 刪除或從 COM+ 注銷程序集的項目 |
SQLServerDAL |
Microsoft SQL Server 特定的 Pet Shop DAL 實現(xiàn),使用了 IDAL 接口 |
Utility |
一組幫助器類,包括 DPAPI 的封裝 |
Web |
Web 頁和控件 |
Solution Items |
用來構(gòu)建應用程序的雜項,比如用來簽署應用程序程序集的 Pet Shop.snk 密鑰文件 |
l 物理部署Pet Shop3.0,可以采取如下圖所示的結(jié)構(gòu):
這里使用網(wǎng)絡(luò)負載平衡 (NLB) 或者可能是硬件實現(xiàn)的負載平衡技術(shù)將入站的網(wǎng)絡(luò)通信量分到了兩臺應用程序服務(wù)器上。 在網(wǎng)絡(luò)請求達到群集中的一臺機器時,針對該請求的所有工作都會在這臺特定機器上進行。 業(yè)務(wù)邏輯和數(shù)據(jù)訪問組件將以程序集的形式安裝在兩臺服務(wù)器上,它們本質(zhì)上是完全相同的。 如果負載平衡軟件配置為使用“Sticky IP”,則每臺服務(wù)器都有自己的會話-狀態(tài)存儲,因為要保證第二個請求返回到實現(xiàn)第一個請求的那臺服務(wù)器。 如果解決方案所需的容錯要求更高,兩臺應用程序服務(wù)器可以共享一個公共會話-狀態(tài)存儲比如 SQL Server 或者一臺專用的會話服務(wù)器(圖中沒有顯示)。 會話-狀態(tài)存儲的類型和位置由每個站點‘web.config’文件里‘system.web’元素‘sessionState’子節(jié)點中的值決定。
posted on 2006-01-16 08:56 MingIsMe 閱讀(575) 評論(0) 編輯 收藏 所屬分類: 16 案例分析