三層架構
設想我們去餐廳吃飯,我們剛剛坐下來,就會有服務員過來為我們服務。服務員記下我們點的菜,然后將菜單傳給廚房的大廚。大廚拿出后勤人員事先買好准備好的菜開始烹制,然后交給服務員端出來讓我們享用。其實這個餐廳的飲食服務業務可以分解為三個部分來完成,每一部分各司其職。服務員只管接待顧客、向廚師傳遞顧客的需求;廚師只管烹炒不同口味、不同特色的美食;后勤工作人員只管提供美食原料。他們三者分工合作共同為顧客提供滿意的服務。在餐廳里為顧客提供服務期間,服務員、廚師、后勤工作人員,三者中任何一個人員發生變化時(例如請假或辭職)都不會影響其他倆者的正常工作,只對變化者進行重新調整即可正常營業。
我們軟件開發的三層架構與餐廳的服務流程類似。“三層架構”中的“三層”是指:
- 表示層(User Interface Layer-UI)
- 業務邏輯層(BussinessLogic Layer-BLL)
- 數據訪問層(Data Access Layer-DAL)。
三層架構的結構可以用如下圖表示:
- 表示層:位於系統的最外層(最上層),離用戶最近。用於顯示數據和接收用戶輸入的數據,只提供軟件系統與用戶交互的界面。
- 業務邏輯層:位於表示層和數據訪問層之間,專門負責處理用戶輸入的信息,或者是將這些信息發送給數據訪問層進行保存,或者是通過數據訪問層從數據庫讀出這些數據。該層可以包括一些對”商業邏輯“描述的代碼在里面。業務邏輯層是表示層和數據訪問層之間的橋梁,負責數據處理和傳遞。開發人員不要在業務邏輯層里寫訪問數據庫的SQL語句。業務邏輯層可以驗證用戶輸入的數據、緩存從數據庫中讀取的數據等等。
- 數據訪問層:僅實現對數據的保存和讀取操作。數據訪問包括訪問數據庫系統、二進制文件、文本文檔或是XML文檔。數據訪問層只負責對數據的訪問存取工作,最好不要出現任何與業務邏輯和界面設計相關的代碼。
三層架構的優缺點
優點:
- 高內聚、低耦合,可以降低層與層之間的依賴。
- 各層互相獨立,完成自己該完成的任務,項目可以多人同時開發,開發人員可以只關注整個結構中的其中某一層。
- 容易移植、維護,如 B / S 轉 C / S、SQLServer 轉 Oracle、添加、修改、刪除等。
- 有利於標准化。
- 有利於各層邏輯的復用。
- 安全性高。用戶端只能通過業務邏輯層來調用數據訪問層,減少了入口點,把很多危險的系統功能都屏蔽了。
三層構架的軟件適應性很強,一旦有什么需求變動可以很快的進行代碼更改,因而代碼的復用性很高。其中一層的代碼改變不影響其他層。例如,用戶界面的改變並不影響業務邏輯層和數據訪問層,甚至訪問不同數據庫管理系統也只改變數據訪問層的代碼而不會影響業務邏輯層和表示層的代碼。
缺點:
三層架構的缺點就是代碼量太多,執行速度慢。三層架構開發模式不適用於對執行速度要求非常高的系統,例如:在線訂票,在線炒股等等。它比較擅長於商業規則經常變化的系統。
原博文: