.Net技術架構

1          總體架構
1.1       架構設計
    下圖從較高的角度對架構設計進行了抽象描述,不針對具體的技術實現細節。

1.2       基於.Net技術的架構

 

從整體架構上看,分爲界面顯示層、業務邏輯層及數據訪問層三層,對於三層間的通信,可直接基於接口來進行調用(local),也可以通過被調用層所暴露的Service來進行通信(remotedistributed),應根據不同的情況來靈活確定。比如,對於界面顯示層與業務邏輯層的通信,如果系統是C/S架構,用戶的客戶端只是做簡單的數據顯示,所有的業務邏輯全部放在服務器端的業務邏輯層來進行,則客戶端的界面顯示層通過訪問業務邏輯層所暴露出的Service來進行通信;對於B/S架構來說,如果系統的業務複雜,數據訪問量很大,考慮到負載均衡、備份等因素,可能將三層分別部署在不同的服務器上,同時各層也有不同的集羣策略,此時,界面顯示層與業務邏輯層間的通信,也是通過Service來進行,相反,如果系統的業務規模較小,三層均部署在同一臺服務器上,則界面顯示層與業務邏輯層之間直接通過接口進行調用。同樣,對於業務邏輯層與數據訪問層的之間的通信也是如此。

1.3       界面顯示層

對於界面顯示層,不包含任何業務邏輯,僅僅負責界面顯示,因此,不論是基於Windows Presentation FoundationWinForm,還是基於ASP.NET來實現,在業務邏輯層上都有統一的訪問接口。界面顯示層包含了界面顯示的元素及簡單的顯示邏輯,如下圖所示。 

注:在上圖及架構圖中均只描述了常用的幾種實現,由於業務邏輯層提供統一的訪問接口,因此,對於其他形式的界面顯示層的實現(如手持終端應用)也是類似的設計。

界面顯示層的設計需要滿足以下目標:

l         根據項目的需要可以選擇B/SC/SSmartClient的實現;

l         能夠對界面風格進行統一管理

l         界面能夠支持國際化與本地化

界面顯示層可選組件:

l         Microsoft Composite UI Application Block,用於SmartClient界面的開發

l         Microsoft User Interaction Process Application Block,可支持WinFormSmartClientASP.NET程序的開發,用於將界面與顯示邏輯、用戶交互、界面流向等分離

l         DotNetNuke,開源的Web應用程序開發框架

l         WPF,微軟新一代界面顯示技術,B/SC/S的融合

1.4       業務邏輯層

對於業務邏輯層,封裝了系統的業務邏輯,並提供了供外部訪問的接口,包括API形式的調用接口(用於同一進程中的local調用),以及基於WCF暴露給外部的Service(用於分佈式的remote調用)。

對於暴露給外部的Service,有的只提供給界面顯示層,有的只提供給外部系統; 另外還有一些Service可以同時提供給界面顯示層及外部系統,但提供的方式和策略是不同的,比如,考慮到網絡環境及安全性要求等因素,對於不同的訪問請求需要有不同的策略,對於界面顯示層的請求,可以以二進制的SOAP格式通過TCP協議進行通信,而對於外部系統的請求,則以SOAP通過HTTPS進行通信。這種策略的定義,在WCF中是很容易配置的。

    
對於業務邏輯層所需要的數據,來源於兩方面,一是來源於數據訪問層,二是來源於外部系統。

1.5       數據訪問層

    對於數據訪問層,封裝了對各種數據源的訪問操作,提供了對底層的數據源(多種關係型數據庫以及CVSExcel、及其他各種文件等)的統一訪問接口,屏蔽不同數據源之間的差異,並且提供O/R-Mapping層,根據不同項目、不同模塊的需要,返回給業務邏輯層的數據,可以是業務對象形式(在O/R-Mapping層進行轉換),也可以是基於表結構的DataReaderDataSet等對象。

    數據訪問層對外提供的訪問接口,也包括API形式的調用接口(用於同一進程中的local調用,即業務邏輯層與數據訪問層部署在同一臺服務器上,被業務邏輯層直接調用),以及基於WCF暴露給外部的Service(用於分佈式的remote調用,即業務邏輯層與數據訪問層部署在不同的服務器上,供業務邏輯層調用)。

    數據訪問層可以再細分爲兩個層面,一層是用來進行O/R-Mapping,另一層是用來屏蔽數據源(多種關係型數據庫以及CVSExcel、及其他各種文件等)之間的差異,如架構設計圖中的數據訪問層的設計所示。

    目前現有的一些數據訪問層組件,在實現上將上述提到的兩層結合在一起進行了實現,如NHibernate,既實現了O/R-Mapping,同時也屏蔽了多種數據庫之間的差異。另外一些數據訪問層組件,如微軟的Data Access Application Block,提供了數據訪問的統一接口,屏蔽了數據庫的差異性,但並未實現O/R-Mapping 

數據訪問層可選擇組件:

Ø         Microsoft Data Access Application Block

Ø         NHibernate

Ø         iBatis.NET
發佈了22 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章