分層架構是一種常見的架構模式(架構風格),也叫N層架構,常見的2層C/S,B/S架構,三層架構MVC,MVP架構,操作系統(tǒng)的內核架構達到5層,3層以上的架構比較少見。
分層架構風格:
層次系統(tǒng)組織成一個層次結構,每一層為上層服務,作為下層客戶,內部的層只對相鄰的層可見。
這種風格支持基于可增加抽象層的設計,允許將一個復雜問題分解成一個增量步驟序列的實現(xiàn)。
典型例子:分層通信協(xié)議。每一層提供一個抽象的功能,作為上層通信的基礎。較低的層次定義低層的交互,最低層通常只定義硬件物理連接。
優(yōu)點:
??基于抽象程度遞增的系統(tǒng)設計,把一個復雜系統(tǒng)按遞增的步驟進行遞減。
??支持功能增強,每一層只和相鄰的層交互,功能的改變只會影響相鄰的上下層。
??支持軟件重用。定義一組標準的接口,允許各種不同的實現(xiàn)方法。
缺點:
??不是每個系統(tǒng)都可以容易的劃分層次。
??很難找到一個合適的,正確的層次抽象方法。
MVC 架構、MVP 架構
????劃分的對象是單個業(yè)務子系統(tǒng) ,劃分的維度是職責, 將不同的職責劃分到獨立層, 但各 層的依賴關系 比較靈活 。
邏輯分層架構
????劃分的對象可以是單個業(yè)務子系統(tǒng),也可以是整個業(yè)務系統(tǒng), 劃分的維度也是職責。雖 然都是基于職責劃分, 但邏輯分層架構中的層是自頂向下依賴的 。典型的 J2EE 系統(tǒng)架構也是邏輯分層架構。
分層架構系統(tǒng)的本質在于:隔離關注點,每層的組件只需要處理本層的邏輯。分層時要保證層與層之間的依賴是穩(wěn)定的,層與層之間依賴于接口,可以更好的支撐快速擴展;按照層之間進行依次傳遞,不能在層之間進行跳躍。
分層結構的代價就是冗余,不管業(yè)務多簡單,每層都必須參與處理。分層架構的優(yōu)勢就體現(xiàn)在通過分層強制約束兩兩依賴, 一旦自由選擇繞過分層,時間一長,架構就會變得混亂。
雖然分層架構的實現(xiàn)在某些場景下看起來有些煩瑣和冗余,但復雜度卻很低。
分層架構另外一個缺點就是性能,因為每一次業(yè)務請求都需要穿越所有的架構分層, 有一些事情是多余的,多少都會有一些性能的浪費 。