軟體開發三層架構

實體三層架構

  • 客戶端應用程式 ( Client Application 顯示層 ) 
  • 應用程式伺服器 ( Application Server 商業邏輯層 )
  • 資料庫伺服器 ( RDBMS, Relational Database Management System 資料層 ) 

三層式架構可以看為是在客戶端與資料庫之間加入了中間層

  • 資料存取層 ( Database Access Layer,簡稱 DAL )
  • 商業邏輯層 ( Business Logic Layer,簡稱 BLL )
  • 資料物件模型層 ( Database Object Model Layer,簡稱 DOM )

邏輯上的三層式架構 ( 或 N 層架構 ) ,是一種軟體抽象的層次結構,從整個應用程式架構的角度來區分為三層 ( 如果需要,還可以分 N 層 ) ,是為了解決整個應用程式中,各個操作過程中不同階段的程式碼封裝的問題,使程式設計師更加專注的處理某階段的商業邏輯。
比如將資料庫操作封裝到一層中,提供一些方法根據參數直接返回用戶需要的資料,這樣在處理具體的商業邏輯的時候,就不用關心資料的儲存問題了;簡單來說就是強化內聚,降低耦合,其簡易分層如下:

  • 表現層 USL ( User Show Layer 或 UI 或 Presentation layer)
    用於顯示資訊和接收用戶輸入的資料,為用戶提供一種交互式操作的介面。通俗講就是展現給用戶的介面,即用戶在使用一個系統的時候的所見所得
  • 商業邏輯層 BLL ( Business Logic Layer )

商業邏輯層在體系架構中的位置很關鍵,它處於資料存取層表現層中,起到了數據交換中承上啟下的作用。由於層是一種弱耦合結構,層與層之間的依賴是向下的,底層對於上層而言是「無知」的,改變上層的設計對於其調用的底層而言沒有任何影響。

  • 資料存取層 DAL ( Data Access Layer )
    有時候也稱為持久層,其功能主要是負責資料庫的訪問,可以訪問資料庫系統、二進位文件、文本文檔或是 XML 文檔。簡單說法就是實現對資料表的查詢、新增、刪除與修改的操作。如果加入 ORM ,那麼就會包括物件和資料表之間的對應,以及物件實體的持久化。

分層設計時,遵循了面向介面設計的思想,那麼這種向下的依賴也應該是一種弱依賴關係。因而在不改變介面定義的前提下,理想的分層式架構,應該是一個支持可抽取、可替換的「抽屜」式架構。

優點

  • 利於標準化
  • 降低層與層之間的依賴
  • 利於各層邏輯的復用,資源重用性好
  • 開發人員可以只關注整個結構中的其中某一層
  • 具有良好的開放性和可擴充性,維護和升級方便
  • 提高系統的安全性

缺點

  • 有時會導致連動的修改。
    如果在表現層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的商業邏輯層和資料存取層中都增加相應的程式碼。
  • 相對於不分層,降低了系統的性能。
    如果不採用分層式結構,很多業務可以直接造訪資料庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
  • 增加了開發成本。

發佈留言