寶雞網(wǎng)站建設(shè)公司
網(wǎng)站建設(shè)技術(shù)asp.net三層架構(gòu)分別是什么
時間:2014-07-05 21:31
次來源:未知
網(wǎng)站建設(shè)中使用N層架構(gòu)的優(yōu)勢.
因為網(wǎng)站建設(shè)中每一層都可以在僅僅更改很少量的代碼后,就能放到物理上不同的服務(wù)器上使用,因此結(jié)構(gòu)靈活而且性能更佳。此外,每層做些什么其它層是完全看不到的,因此更改、更新某層,都不再需要重新編譯或者更改全部的層了。這是個很強大的功能。例如,如果把數(shù)據(jù)訪問代碼與業(yè)務(wù)邏輯層分離,當(dāng)數(shù)據(jù)庫服務(wù)器更改后,你只需要更改數(shù)據(jù)訪問的代碼,因為業(yè)務(wù)邏輯層是不變的,因此不需要更改或者重新編譯業(yè)務(wù)邏輯層。
網(wǎng)站建設(shè)中一個N層的應(yīng)用程序通常有三層:表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)層。下面讓我們看看每層都做些什么。
表現(xiàn)層(Presentation Layer)
表現(xiàn)層用于用戶接口的展示,以及用業(yè)務(wù)層的類和對象來“驅(qū)動”這些接口。
在ASP.NET中,該層包括aspx頁面、用戶控制、服務(wù)器控制以及某些與安全相關(guān)的類和對象。
業(yè)務(wù)層(Business Tier)
業(yè)務(wù)層用于訪問數(shù)據(jù)層,從數(shù)據(jù)層取數(shù)據(jù)、修改數(shù)據(jù)以及刪除數(shù)據(jù),并將結(jié)果返回給表現(xiàn)層。
在ASP.NET中,該層包括使用SqlClient或OleDb從SQL Server或Access數(shù)據(jù)庫取數(shù)據(jù)、更新數(shù)據(jù)及刪除數(shù)據(jù),并把取得的數(shù)據(jù)放到DataReader或DataSet中返回給表現(xiàn)層。返回的數(shù)據(jù)也許只有一個整型數(shù)字,比如一個表的行記錄數(shù)目,但這也要用數(shù)據(jù)層的數(shù)據(jù)進行計算。
BLL和DAL
通常該層被劃分成兩個子層:業(yè)務(wù)邏輯層(Business Logic Layer,BLL)和數(shù)據(jù)訪問層(Data Access Layers,DAL)。業(yè)務(wù)邏輯層在數(shù)據(jù)訪問層之上,也就是說BLL調(diào)用DAL的類和對象。DAL訪問數(shù)據(jù)并將其轉(zhuǎn)給BLL。
在ASP.NET中,該層可以用SqlClient或OleDb從SQL Server或Access數(shù)據(jù)庫取數(shù)據(jù),把數(shù)據(jù)通過DataSet 或DataReader的形式給BLL,BLL處理數(shù)據(jù)給表現(xiàn)層。有的時候,例如直接把DataSet 或DataReader送給表現(xiàn)層的時候,BLL是一個透明層。
數(shù)據(jù)層(Data Tier)
數(shù)據(jù)層是數(shù)據(jù)庫或者數(shù)據(jù)源。在.NET中,通常它是一個SQL Server或Access數(shù)據(jù)庫,但不僅限于此兩種形式,它還可能是Oracle,mySQL,甚至是XML。
邏輯層VS(分布式)物理層
人們?nèi)菀讓⑦@兩個概念搞混。我們說邏輯層是把層按類的集合來劃分,而這些層都在同一臺個服務(wù)器上。(分布式)物理層是指類的集合在不同的服務(wù)器上,用附加的代碼來處理層間的通信,比如remoting和web服務(wù)。
決定如何劃分你的層(是物理的還是不是物理的)是非常重要的。在劃分時應(yīng)考慮下面因素:
1、注意如果劃分成物理層,你的應(yīng)用程序的速度會因為不同服務(wù)器在網(wǎng)絡(luò)中通信的延遲而減慢。所以,如果你決定用物理層,請確保獲得性能的提升大于性能的降低。
2、按照n層架構(gòu)設(shè)計你的應(yīng)用程序。
3、部署以及維護物理分布式的應(yīng)用程序的成本是很高的。你首先需要不止一臺服務(wù)器,你還需要網(wǎng)絡(luò)硬件來連接這些服務(wù)器。在這種情況下,部署應(yīng)用變得更加復(fù)雜!因此這樣做之前請確定這樣做是否值得。
另外還要注意,網(wǎng)站建設(shè)中你的應(yīng)用程序的每層都做何使用。你也許因為運行的多個服務(wù)都需要某一層而把該層放到別臺服務(wù)器上。例如,你也許會因為給不同的用戶定制不同的表現(xiàn)層,而將業(yè)務(wù)邏輯層放于別處;你也許會因為還有其它的應(yīng)用訪問同一個數(shù)據(jù)庫,而把SQL server服務(wù)放到別處。