分層架構模式裏的組件被分成幾個平行的層次,每一層都代表了應用的一個功能(展示邏輯或者業務邏輯)。儘管分層架構沒有規定自身要分成幾層幾種,大多數的結構都分成四個層次:展示層,業務層,持久層,和數據庫層。
常見的圖如下
複雜一點的分層架構圖如下
分層架構的特點:
1. 分層架構中的每一層都着特定的角色和職能。
比如說展示層並不需要關心怎樣得到用戶數據,它只需在屏幕上以特定的格式展示信息。業務層並不關心要展示在屏幕上的用戶數據格式,也不關心這些用戶數據從哪裏來。它只需要從持久層得到數據,執行與數據有關的相應業務邏輯,然後把這些信息傳遞給展示層。
2. 分層架構的一個突出特性是組件間關注點分離 (separation of concerns)。
一個層中的組件只會處理本層的邏輯。比如說,展示層的組件只會處理展示邏輯,業務層中的組件只會去處理業務邏輯。
這樣的好處就是開發,測試,管理,維護都清楚多了 比如開發的時候就可以這樣 張三和李四負責展示層,王五,馬六負責邏輯層。
3. 每一層都是封閉的。
舉個例子,從展示層傳遞來的請求首先會傳遞到業務層,然後傳遞到持久層,最後才傳遞到數據層。數據不能直接從展示層傳遞到數據庫層,如果把寫入數據庫的操作也在展示層代碼裏寫,就越寫越亂了。
分層架構的優點,缺點和難點
作用:分解複雜的軟件系統
優點:1、降低複雜度,上層不需要關注下層細節。
2、提高靈活性,可以靈活替換某層的實現。
3、減小耦合度,將層次間的依賴減到最低。
4、有利於重用,同一層次可以有多種用途。
5、有利於標準化。
缺點:1、不能封裝所有工作,可能會帶來及聯修改。
2、過多層次影響性能。
難點:1、如何劃分層次。
2、定義層次職責。
難點也是架構師的作用所在,有效的劃分層次和定義職責後,團隊的開發就會更加順暢。
分層架構的演變歷史
分層演化過程:
單層架構–>兩層架構–>三層架構–>N層架構
單層架構:早期批處理系統
兩層架構:C/S 客戶/服務器模式
特點:沒有複雜的領域邏輯
優點:有非常好的工具支持,VB、Delphi、PowerBuilder
缺點:代碼冗餘,難於維護。
模式:1、領域邏輯寫在客戶端
2、領域邏輯寫在數據庫(存儲過程)
面向對象技術、WEB興起、Java出現共同推進了三層架構。
Layer與Tier的區別:
1、Tier強調物理上的分離,Two Tier System。
2、Layer強調邏輯上的分層。
三層架構:表現層-領域層-數據源層(持久層)
1、表現層:提供服務,顯示信息。
2、領域層:系統核心邏輯。
3、數據源層:與數據庫、消息系統以及其他軟件包通信
關於面向對象的三層架構理解:
面向對象——三層架構(表現層、業務層、持久層)
三層架構:即表現層、業務層、持久層。
① 持久層:採用DAO模式,建立實體類和數據庫表映射(ORM映射)。也就是哪個類對應哪個表,哪個屬性對應哪個列。持久層
的目的就是,完成對象數據和關係數據的轉換。
② 業務層:採用事務腳本模式。將一個業務中所有的操作封裝成一個方法,同時保證方法中所有的數據庫更新操作,即保證同時成
功或同時失敗。避免部分成功部分失敗引起的數據混亂操作。
③ 表現層:採用MVC模式。
M稱爲模型,也就是實體類。用於數據的封裝和數據的傳輸。
V爲視圖,也就是GUI組件,用於數據的展示。
C爲控制,也就是事件,用於流程的控制
設計原則:
業務層接口的設計原則:一個實體類一個接口,一次提交一個業務方法。業務方法的參數來自表現層。
持久層接口的設計原則:一個實體類一個接口,一次數據庫操作一個持久方法。