分層架構模式裡的元件被分成幾個平行的層次,每一層都代表了應用的一個功能(展示邏輯或者業務邏輯)。盡管分層架構沒有規定自身要分成幾層幾種,大多數的結構都分成四個層次:展示層,業務層,持久層,和資料庫層。
常見的圖如下
複雜一點的分層架構圖如下分層架構的特點:
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為控制,也就是事件,用于流程的控制