複製鏈接
請複製以下鏈接發送給好友

三層架構

鎖定
三層架構就是為了符合“高內聚,低耦合”思想,把各個功能模塊劃分為表示層(UI)、業務邏輯層(BLL)和數據訪問層(DAL)三層架構,各層之間採用接口相互訪問,並通過對象模型的實體類(Model)作為數據傳遞的載體,不同的對象模型的實體類一般對應於數據庫的不同表,實體類的屬性與數據庫表的字段名一致。 [1] 
三層架構區分層次的目的是為了 “高內聚,低耦合”。開發人員分工更明確,將精力更專注於應用系統核心業務邏輯的分析、設計和開發,加快項目的進度,提高了開發效率,有利於項目的更新和維護工作。 [2] 
中文名
三層架構 [3] 
外文名
3-tier architecture [3] 
分    類
表示層(UI)、業務邏輯層(BLL)和數據訪問層(DAL) [1] 
目    的
“高內聚,低耦合”的思想 [2] 
優    點
降低層與層之間的依賴 標準化 [1] 
應    用
應用服務器、應用客户端等 [1] 

三層架構含義

三層架構主要是指將業務應用規劃中的表示層 UI、數據訪問層 DAL 以及業務邏輯層 BLL,其分層的核心任務是“高內聚低耦合”的實現。在整個軟件架構中,分層結構是常見和普通的軟件結構框架,同時也具有非常重要的地位和意義。這種三層架構可以在軟件開發的過程中,劃分技術人員和開發人員的具體開發工作,重視核心業務系統的分析、設計以及開發,提高信息系統開發質量和開發效率,進而為信息系統日後的更新與維護提供很大的方便。 [4] 

三層架構分層方式

怎麼樣分層符合三層架構原則呢?主要有以下三種分層方式: [3] 
1、數據層不包含任何代碼,只有數據庫,還有相關的存儲過程。這種模式下,數據層看起來就變得很簡單了。只包含所建立的數據庫和一些存儲過程(注意是存儲過程)。其實這些存儲過程的建立也是相當複雜的,因為它們可以完成除數據訪問外的其他一些很強大的功能,如分頁、實現搜索算法等。數據訪問的邏輯就都放在業務層,當然業務層還包含其他一些邏輯代碼。我們來看一個示例,假設數據庫裏有一個表 BOOKS(書),建立一個存儲過程 GetAllBooks,用來讀取書的信息,這樣在業務層裏編一個方法 GetBookS()和一個公用數據庫訪問類,GetBooks()就通過數據庫訪問類打開連接,執行在存儲過程,返回數據 (返回類型可以是 DataT - able,DataSet,DataReader 或 者 實 體 類)。業務層單獨編譯成一個或者幾個 DLL 文件。接着就是表示層了,表示層通過調用GetBookS()返回數據綁定在相關的控件裏。業務層的方法都是在表示層調用。一般來説 book.aspx 和 book.aspx.cs 都是表示層的內容,所有前台的設計、相關控件、數據緩存都是屬於表示層。 [3] 
2、數據層還包含所有公共數據訪問代碼。這種模式和前一種差別不大,主要是把數據訪問代碼留到數據層。這樣可以很方便地實現對多數據庫的支持。業務邏輯層直接調用數據層的相關訪問數據的代碼,完全不必瞭解底層是什麼數據庫。其他和前一種沒什麼分別。 [3] 
3、所有數據讀取都放在數據層。這種模式下像前面所述的 GetBooks()方法都是放在數據層,在業務層再定義一個GetBookS()方法以供表示層調用。這種模式下業務層不但不必瞭解底層是什麼數據庫,而且連數據庫的結構都不必瞭解了,這是最標準的三層架構了,在 Microsoft 的 PetShop 4.0 裏就是這種模式。 [3] 

三層架構結構體系

圖1 圖1
三層架構的體系結構:表示層和業務邏輯層之間用對象模型的實體類對象來傳遞數據,業務邏輯層和數據訪問層之間用對象模型的實體類對象來傳遞數據,數據訪問層通過.NET 提供的 ADO.NET 組件來操作數據庫,或者利用 SQLServer 數據庫服務器的存儲過程來完成數據操作,三層架構的體系結構如圖1所示。 [1] 
這種分層體系結構具有以下四個優點: [1] 
(1)避免了表示層直接訪問數據訪問層,表示層只和業務邏輯層有聯繫,提高了數據安全性。 [1] 
(2)有利於系統的分散開發,每一個層可以由不同的人員來開發,只要遵循接口標準,利用相同的對象模型實體類就可以了,這樣就可以大大提高系統的開發速度。 [1] 
(3)方便系統的移植,如果要把一個 C/S 的系統變成 B/S 系統,只要修改三層架構的表示層就可以了,業務邏輯層和數據訪問層幾乎不用修改就可以輕鬆的把系統移植到網絡上。 [1] 
(4)項目結構更清楚,分工更明確,有利於後期的維護和升級。 [1] 

三層架構開發原理

三層架構中主要功能與業務邏輯一般要在業務邏輯層進行信息處理和實現,其中三層體系架構中的客户端和數據庫要預設中間層,成為組建層。三層架構中的三層具有一定的邏輯性,即是將三層設置到同一個計算機系統中,把業務協議、合法校驗以及數據訪問等程序歸置到中間層進行信息處理,一般客户端無法和數據庫進行數據傳輸,主要是利用 COM/DCOM 通訊和中間層構建銜接通道,實現中間層與數據庫的數據傳輸,進而實現客户端與是數據庫的交互。 [4] 

三層架構表示層

表示層又稱表現層 UI,位於三層構架的最上層,與用户直接接觸,主要是 B/S 信息系統中的 Web瀏覽頁面。作為 Web瀏覽頁面,表示層的主要功能是實現系統數據的傳入與輸出,在此過程中不需要藉助邏輯判斷操作就可以將數據傳送到 BBL 系統中進行數據處理,處理後會將處理結果反饋到表示層中。換句話説,表示層就是實現用户界面功能,將用户的需求傳達和反饋,並用 BLL 或者是 Models 進行調試,保證用户體驗 [4] 

三層架構業務邏輯層

業務邏輯層 BLL 的功能是對具體問題進行邏輯判斷與執行操作,接收到表現層 UI 的用户指令後,會連接數據訪問層 DAL,訪問層在三層構架中位於表示層與數據層中間位置,同時也是表示層與數據層的橋樑,實現三層之間的數據連接和指令傳達,可以對接收數據進行邏輯處理,實現數據的修改、獲取、刪除等功能,並將處理結果反饋到表示層 UI 中,實現軟件功能。 [4] 

三層架構數據訪問層

數據訪問層 DAL 是數據庫的主要操控系統,實現數據的增加、刪除、修改、查詢等操作,並將操作結果反饋到業務邏輯層 BLL。在實際運行的過程中,數據訪問層沒有邏輯判斷能力,為了實現代碼編寫的嚴謹性,提高代碼閲讀程度,一般軟件開發人員會在該層中編寫 Data AccessCommon,保證數據訪問層 DAL 數據處理功能。 [4] 

三層架構實體類庫

實體類庫是數據庫表的映射對象,在信息系統軟件實際開發的過程中,要建立對象實例,將關係數據庫表採用對象實體化的方式表現出來,輔助軟件開發中對各個系統功能的控制與操作執行,並利用 GET 與 SET 把數據庫表中的所有字段映射為系統對象,建立實體類庫,進而實現各個結構層的參數傳輸,提高代碼的閲讀性。從本質上看,實體類庫主要服務於表示層、業務邏輯層以及數據訪問層,在三層之間進行數據參數傳輸,強化數據表示的簡約性。 [4] 

三層架構優點

  1. 高內聚、低耦合,可以降低層與層之間的依賴。 [2] 
  2. 各層互相獨立,完成自己該完成的任務,項目可以多人同時開發,開發人員可以只關注整個結構中的其中某一層。 [2] 
  3. 容易移植、維護,如 B / S 轉 C / S、SQLServer 轉 Oracle、添加、修改、刪除等。 [2] 
  4. 有利於標準化。 [2] 
  5. 有利於各層邏輯的複用。 [2] 
  6. 安全性高。用户端只能通過業務邏輯層來調用數據訪問層,減少了入口點,把很多危險的系統功能都屏蔽了。 [2] 

三層架構應用

應用服務器
三層架構 三層架構
服務器一般包括有連接與無連接形式,無連接在最底層要設置UDP/IP協議實現服務器通信功能,同時在實際使用的過程中,由於客户機無法保證可靠的傳輸渠道,使得客户機向服務器提交請求時,很容易造成請求的丟失、延遲以及傳遞失序等傳輸問題,進而降低通信質量。UDP的可靠性很低,在實際運行中UDP要依託於下層IP網絡進行交付分組,無法引入檢驗程序,而IP網絡還要由實際硬件網絡或者是相關網關決定其工作質量。因此,從這一層面上看,下層網絡的好壞直接關係到UDP工作。在進行開發有連接服務器的過程中,要利用TCP/IP通信協議,利用互聯網創建良好的通信環境,進而提高通信數據的真實性和可靠性。TCP/IP通信協議可以對數據信息進行驗證與校對,保證數據信息的完整性。同時在實際運行中,可以通過數據的序列號排序保證數據信息的有序到達,防止出現信息重複分組的情況。另外,這種通信協議可以對流量進行有效控制,確保發送信息速度在接收方的承受範圍以內,通過INTERNET,實現服務器的面向連接。 [4] 
應用客户端
在三層構架系統中,客户端是使用者的主要功能體驗區域,相比於服務器而言非常簡單。一方面,在三層構架運行的過程中,客户機軟件要和各個服務器進行相互通信,不需要過於重視併發性處理。另一方面,一般客户機軟件可以仿照常規程序進行指令執行,不需要進行外加保護,依託於操作系統進行強迫性保護。但與此同時對界面具有極高的要求,系統分析的過程中就要進行專門的界面設計,同時要和客户進行及時溝通,掌握客户的實際需求,實現高效的信息反饋與交流溝通,進而保證信息系統軟件界面設計的質量和效率。 [4] 
數據服務器
在進行數據服務器選擇的過程中,要根據信息系統平台要求和用户期望要求,同時對應各個服務器的特點進行使用與選擇。一般情況下出於對系統性能的考慮,會選擇SQLSERVER數據服務器,設計階段中要通過Proactive等有效措施對系統數據庫的實際使用性能進行不斷地優化與完善。同時管理人員要和程序設計人員進行有效的溝通與協作,明確信息系統軟件的性能目標,設置性能期望值,構建系統資源組合體系,滿足用户的實際需求。 [4] 
數據庫和應用服務器的連接
在基於三層構架的信息系統開發中,應用服務器要利用SQL語言進行連接數據庫服務器,其連接方法包括DB-Library、DAO以及OLE等方式,其中DB-Library是最為常見的連接方式,作為SQLSERVER的重要接口層,具有極強的訪問信息效率和訪問速度。這主要是源於DB-Library的語言開發能力,直接省去DAO以及OLE等連接方式中抽象層的調用,節省了信息訪問時間。同時,三層構架適用於使用諸多開發語言的信息系統開發,不是.NET的專利,也不是專門用在數據庫上的技術,而是一種更加普適的架構設計理念,除了數據、邏輯、界面等層次之外,在實際應用中還會根據需要多出傳遞數據的層、接口層等等。在結合DB-Library數據庫連接後,設置NTWDBLIB.LIB組建,構建CDBConn實體類庫體系,實現數據庫與應用服務器的連接。因此,信息系統軟件架構可以為系統開發創造出良好的分佈式計算環境,其中邏輯層可以實現多個機器的同時運行,通過計算機網絡計算能力,強化系統各個功能板塊的精準性和複用性,進而有效減少了信息系統軟件開發的時間和週期,保證信息系統的安全性與拓展性,實現系統功能的最大化實現。 [4] 
參考資料