爲何使用N層架構?

因爲每一層都可以在僅僅更改很少量的代碼後,就能放到物理上不同的服務器上使用,因此結構靈活而且性能更佳。此外,每層做些什麼其它層是完全看不到的,因此更改、更新某層,都不再需要重新編譯或者更改全部的層了。這是個很強大的功能。例如,如果把數據訪問代碼與業務邏輯層分離,當數據庫服務器更改後,你只需要更改數據訪問的代碼,因爲業務邏輯層是不變的,因此不需要更改或者重新編譯業務邏輯層。

一個N層的應用程序通常有三層:表現層、業務層和數據層。下面讓我們看看每層都做些什麼。

表現層(Presentation Layer)

表現層用於用戶接口的展示,以及用業務層的類和對象來“驅動”這些接口。

在ASP.NET中,該層包括aspx頁面、用戶控制、服務器控制以及某些與安全相關的類和對象。

業務層(Business Tier)

業務層用於訪問數據層,從數據層取數據、修改數據以及刪除數據,並將結果返回給表現層。

在ASP.NET中,該層包括使用SqlClient或OleDb從SQL Server或Access數據庫取數據、更新數據及刪除數據,並把取得的數據放到DataReader或DataSet中返回給表現層。返回的數據也許只有一個整型數字,比如一個表的行記錄數目,但這也要用數據層的數據進行計算。



BLL和DAL

通常該層被劃分成兩個子層:業務邏輯層(Business Logic Layer,BLL)和數據訪問層(Data Access Layers,DAL)。業務邏輯層在數據訪問層之上,也就是說BLL調用DAL的類和對象。DAL訪問數據並將其轉給BLL。

在ASP.NET中,該層可以用SqlClient或OleDb從SQL Server或Access數據庫取數據,把數據通過DataSet 或DataReader的形式給BLL,BLL處理數據給表現層。有的時候,例如直接把DataSet 或DataReader送給表現層的時候,BLL是一個透明層。

數據層(Data Tier)

數據層是數據庫或者數據源。在.NET中,通常它是一個SQL Server或Access數據庫,但不僅限於此兩種形式,它還可能是Oracle,mySQL,甚至是XML。

邏輯層VS(分佈式)物理層

人們容易將這兩個概念搞混。我們說邏輯層是把層按類的集合來劃分,而這些層都在同一臺個服務器上。(分佈式)物理層是指類的集合在不同的服務器上,用附加的代碼來處理層間的通信,比如remoting和web服務。

決定如何劃分你的層(是物理的還是不是物理的)是非常重要的。在劃分時應考慮下面因素:

1、注意如果劃分成物理層,你的應用程序的速度會因爲不同服務器在網絡中通信的延遲而減慢。所以,如果你決定用物理層,請確保獲得性能的提升大於性能的降低。

2、按照n層架構設計你的應用程序。

3、部署以及維護物理分佈式的應用程序的成本是很高的。你首先需要不止一臺服務器,你還需要網絡硬件來連接這些服務器。在這種情況下,部署應用變得更加複雜!因此這樣做之前請確定這樣做是否值得。

另外還要注意,你的應用程序的每層都做何使用。你也許因爲運行的多個服務都需要某一層而把該層放到別臺服務器上。例如,你也許會因爲給不同的用戶定製不同的表現層,而將業務邏輯層放於別處;你也許會因爲還有其它的應用訪問同一個數據庫,而把SQL server服務放到別處 
發佈了16 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章