濟南軟件開(kāi)發(fā)之軟件的三層架構

2015-11-25 09:12:10
(一)概述 

    在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種(zhǒng)結構。微軟推薦的分層式結構一般分爲三層,從下至上分别爲:數據訪問層、業務邏輯層(又或稱爲領域層)、表示層。

    1、表示層(UI):通俗講就(jiù)是展現給用戶的界面(miàn),即用戶在使用一個系統的時候他的所見所得。

    2、業務邏輯層(BLL):針對(duì)具體問題的操作,也可以說是對(duì)數據層的操作,對(duì)數據業務邏輯處理。 

    3、數據訪問層(DAL):該層所做事(shì)務直接操作數據庫,針對(duì)數據的增添、删除、修改、查找等。

(二)三層結構原理:

    3個層次中,系統主要功能(néng)和業務邏輯都(dōu)在業務邏輯層進(jìn)行處理。 

    所謂三層體系結構,是在客戶端與數據庫之間加入了一個“中間層”,也叫(jiào)組件層。這(zhè)裡(lǐ)所說的三層體系,不是指物理上的三層,不是簡單地放置三台機器就(jiù)是三層體系結構,也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這(zhè)三個層放置到一台機器上。三層體系的應用程序將(jiāng)業務規則、數據訪問、合法性校驗等工作放到了中間層進(jìn)行處理。通常情況下,客戶端不直接與數據庫進(jìn)行交互,而是通過(guò)COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數據庫進(jìn)行交互。

(三)各層的作用 

    數據訪問層: 有時候也稱爲是持久層,其功能(néng)主要是負責數據庫的訪問,可以訪問數據庫系統、二進(jìn)制文件、文本文檔或是XML文檔。簡單的說法就(jiù)是實現對(duì)數據表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那麼(me)就(jiù)會(huì)包括對(duì)象和數據表之間的mapping,以及對(duì)象實體的持久化。主要是對(duì)原始數據(數據庫或者文本文件等存放數據的形式)的操作層,而不是指原始數據,也就(jiù)是說,是對(duì)數據的操作,而不是數據庫,具體爲業務邏輯層或表示層提供數據服務。

    業務邏輯層: 主要是針對(duì)具體的問題的操作,也可以理解成(chéng)對(duì)數據層的操作,對(duì)數據業務邏輯處理,如果說數據層是積木,那邏輯層就(jiù)是對(duì)這(zhè)些積木的搭建。業務邏輯層(Business Logic Layer)無疑是系統架構中體現核心價值的部分。它的關注點主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計,也即是說它是與系統所應對(duì)的領域(Domain)邏輯有關,很多時候,也將(jiāng)業務邏輯層稱爲領域層。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一書中,將(jiāng)整個架構分爲三個主要的層:表示層、領域層和數據源層。作爲領域驅動設計的先驅Eric Evans,對(duì)業務邏輯層作了更細緻地劃分,細分爲應用層與領域層,通過(guò)分層進(jìn)一步將(jiāng)領域邏輯與領域邏輯的解決方案分離。 業務邏輯層在體系架構中的位置很關鍵,它處于數據訪問層與表示層中間,起(qǐ)到了數據交換中承上啓下的作用。由于層是一種(zhǒng)弱耦合結構,層與層之間的依賴是向(xiàng)下的,底層對(duì)于上層而言是“無知”的,改變上層的設計對(duì)于其調用的底層而言沒(méi)有任何影響。如果在分層設計時,遵循了面(miàn)向(xiàng)接口設計的思想,那麼(me)這(zhè)種(zhǒng)向(xiàng)下的依賴也應該是一種(zhǒng)弱依賴關系。因而在不改變接口定義的前提下,理想的分層式架構,應該是一個支持可抽取、可替換的“抽屜”式架構。正因爲如此,業務邏輯層的設計對(duì)于一個支持可擴展的架構尤爲關鍵,因爲它扮演了兩(liǎng)個不同的角色。對(duì)于數據訪問層而言,它是調用者;對(duì)于表示層而言,它卻是被(bèi)調用者。依賴與被(bèi)依賴的關系都(dōu)糾結在業務邏輯層上,如何實現依賴關系的解耦,則是除了實現業務邏輯之外留給設計師的任務。 

    表示層: 位于最外層(最上層),離用戶最近。用于顯示數據和接收用戶輸入的數據,爲用戶提供一種(zhǒng)交互式操作的界面(miàn)。主要表示WEB方式,也可以表示成(chéng)WINFORM方式,WEB方式也可以表現成(chéng):aspx, 如果邏輯層相當強大和完善,無論表現層如何定義和更改,邏輯層都(dōu)能(néng)完善地提供服務。