理解ASP.NET中多層架構

Asp.net的多層架構主要是爲了解決數據層,邏輯層,表示層等之間的關係。
我的做法是這樣的:首先建立一個DataCore的基類。基類裏面封裝了一些低層的數據庫的基本操作,比如說數據庫聯接,調用存儲過程等等。很多人對開發多層應用程序感到一定的困難。來看一個例子:對於一個只有一兩個人的小公司,一個人可能同時擔當老闆、出納、會計、市場、銷售、開發等多項工作。而對於一個大公司,就會進行比較嚴密的分工,每個人只完成一部分工作,需要彼此配合才能保證正常運轉。
以前的開發程序就類似於一個小公司,從用戶界面到數據庫訪問等所有功能都在一個頁面內完成,這樣的缺點有:
1).開發起來比較困難,很難實現多人協作開發
2).一旦數據庫或規則有變,就可能要重新修改整個頁面,加大維護成本
3).因爲所有功能都混合在一起,程序重用性差。如果開發一個新項目,幾乎要重寫代碼

爲了解決這個問題,人們就提出了“多層應用程序”概念,其本質類似於一個職權明確的大公司,對頁面進行分工,將數據訪問、業務規則等功能都放在專門的文件中。比較流行的有二層架構、三層架構和MVC。

一. 二層架構

二層架構,就是將程序分爲用戶界面層和數據訪問層。其本質是將訪問數據庫的代碼放入數據訪問層中,而用戶界面層通過數據訪問層對數據庫進行操作。 相互作用關係如下:(“<—>”表示雙向箭頭)

用戶界面 <—> 數據訪問 <—> 數據庫

二. 三層架構

三層架構,即將二層架構中的業務邏輯從數據訪問層中分離出來,成爲一個單獨的業務邏輯層。將程序分爲三層後,數據訪問層就只管對數據庫進行操作,而業務邏輯層負負責對數據進行各種處理。
從下至上分爲三層,分別爲:DAL(數據處理層)、BLL(業務邏輯層)、UI(用戶接口層)
1)數據訪問層(database access layer,DAL):有時候也稱爲是持久層,其功能主要是負責數據庫的訪問。簡單的說法就是實現對數據表的Select,Insert,Update, Delete的操作。如果要加入ORM的元素,那麼就會包括對象和數據表之間的mapping,以及對象實體的持久化;
2)業務邏輯層(business logic layer, BLL):是整個系統的核心,它與這個系統的業務(領域)有關;
3)表示層(user interface layer, UIA):是系統的UI部分,負責使用者與整個系統的交互。在這一層中,理想的狀態是不應包括系統的業務邏輯。表示層中的邏輯代碼,僅與界面元素有關;
4)實體模型層(Model):包含了所有的數據信息,這些數據信息以各種Entity實例的形式存在。是整個系統基礎層次;

分層式結構究竟其優勢何在:

1)、開發人員可以只關注整個結構中的其中某一層;

2)、可以很容易的用新的實現來替換原有層次的實現;

3)、可以降低層與層之間的依賴;

4)、有利於標準化;

5)、利於各層邏輯的複用。

概括來說,分層式設計可以達至如下目的:分散關注、鬆散耦合、邏輯複用、標準定義。

一個好的分層式結構,可以使得開發人員的分工更加明確。一旦定義好各層次之間的接口,負責不同邏輯設計的開發人員就可以分散關注,齊頭並進。例如UI人員只需考慮用戶界面的體驗與操作,領域的設計人員可以僅關注業務邏輯的設計,而數據庫設計人員也不必爲繁瑣的用戶交互而頭疼了。每個開發人員的任務得到了確認,開發進度就可以迅速的提高。

鬆散耦合的好處是顯而易見的。如果一個系統沒有分層,那麼各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發生改變,則牽一髮而動全身,對項目的影響極爲嚴重。降低層與層間的依賴性,既可以良好地保證未來的可擴展,在複用性上也是優勢明顯。每個功能模塊一旦定義好統一的接口,就可以被各個模塊所調用,而不用爲相同的功能進行重複地開發。

進行好的分層式結構設計,標準也是必不可少的。只有在一定程度的標準化基礎上,這個系統纔是可擴展的,可替換的。而層與層之間的通信也必然保證了接口的標準化。

“金無足赤,人無完人”,分層式結構也不可避免具有一些缺陷:

1)、降低了系統的性能。這是不言而喻的。如果不採用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。

2)、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,爲保證其設計

需要注意的是,雖然三層架構有很多的好處,但如果你的程序很簡單,或者將來肯定不會重用,或不一定要採用兩層架構,也許採用兩層或普通的程序開發速度會更快。要根據實際情況具體處理。

三. MVC

M 即Model(模型層),主要負責出來業務邏輯以及數據庫的交互;
V 即View(視圖層),主要用於顯示數據和提交數據;
C 即Controller(控制器),主要是用作捕獲請求並控制請求轉發;

MVC是在應用程序(BS結構)的視圖層劃分出來的不同功能的幾個模塊,主要是爲了解決應用程序用戶界面的樣式替換問題,把展示數據的 HTML 頁面儘可能的和業務代碼分離。

四. 三層結構與MVC的區別

三層架構是界面層(UI)業務邏輯層(BLL)和數據訪問層(DAL)構成的,而MVC是模型層(M)界面層(View)和控制層(Controller)構成的,而且他們之間也不對應。如果硬要給他們對應的話,那麼三層架構中的UI對應MVC中的view都是用於顯示以及獲取界面的數據;三層架構中的BLL層和DAL層對應MVC中的Model層都是用於處理上層傳遞來的數據以及從數據庫獲取的數據的;MVC中的Controller最多算是三層架構中的UI的一部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章