資料庫的三層架構

2021-05-22 22:10:16 字數 4447 閱讀 7446

關於

三層架構

通常意義上的三層架構 就是將整個業務應用 劃分為:

表現層 (

ui)、業務邏輯層 (

bll)、資料訪問層 (

dal)。

區分層次的目的 即為了

「高內聚,低耦合

」的思想。

1、表現層(

ui):通俗講就是展現給使用者的

介面 ,即使用者在使用乙個系統的時候他的所見所得。

2、業務邏輯層(

bll):針對具體問題的操作,也可以說是對 資料層 的操作,對資料業務邏輯 處理。

3、資料訪問層(

dal):該層所做事務直接運算元據庫,針對資料的增、刪、改、查。

概述

在軟體體系架構設計中,分層式結構 是最常見,也是最重要的一種結構。微軟推薦的分層式結構一般分為三層,從下至上分別為:資料訪問層、業務邏輯層(又或成為領域層)、表示層。 

三層結構原理 :

3個層次中,系統主要功能和業務邏輯 都在業務邏輯層 進行處理。 

所謂三層體系結構,是在客戶端與資料庫 之間加入 了乙個

「中間層

」,也叫元件層。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三颱機器就是三層體系結構,也不僅僅有

b/s應用才是三層體系結構,三層 是指邏輯上的三層 ,即使這三個層放置到一台機器上。 

三層體系的應用程式將業務規則 、資料訪問 、合法性校驗 等工作放到了中間層進行處理。通常情況下,客戶端不直接與資料庫進行互動,而是通過

通訊與中間層

建立連線 ,再經由中間層與資料庫 進行互動。

表示層

位於最外層(最上層),離使用者最近。用於顯示資料 和接收使用者輸入的資料 ,為使用者

提供一種互動式操作的

介面 。

業務邏輯層

業務邏輯層(

business logic layer

)無疑是系統架構中體現核心價值 的部分。它的關注點主要集中(在業務規則的制定 、業務流程的實現 等)與業務需求有關 的系統設計 ,也即是說它是與系統所應對的領域(

domain

)邏輯有關,很多時候,也將業務邏輯層 稱為領域層 。 例如

martin fowler

在《》一書中,將整個架構分為三個主要的層:表示層、領域層和資料來源層。作為領域驅動設計的先驅

eric evans

,對業務邏輯層作了更細緻地劃分,細分為應用層 與領域層 ,通過分層進一步將領域邏輯 與領域邏輯 的解決方案分離。 

業務邏輯層在體系架構中 的位置很關鍵,它處於資料訪問層與表示層中間,起到 了資料交換中

承上啟下的

作用 。由於層

是 一種弱耦合

結構 ,層與層之間 的依賴 是向下的 ,底層對於上層而言是「無知

」的,改變上層的設計 對於其呼叫底層沒有任何影響。如果在分層設計時,遵循了面向介面設計 的思想,那麼這種向下的依賴 也應該是一種弱依賴關係 。因而在不改變介面定義的前提下,理想的

分層式架構 ,應該是乙個支援可抽取 、可替換的

「抽屜」 式架構 。正因為如此,業務邏輯層的設計 對於乙個支援可擴充套件的

架構 尤為關鍵,因為它扮演了兩個不同的角色。對於資料訪問層而言,它是呼叫者;對於表示層而言,它卻是被呼叫者。依賴與被依賴的關係都糾結 在業務邏輯層上,如何實現依賴關係的解耦,則是除了實現業務邏輯之外留給設計師的任務。

資料層

資料訪問層:有時候也稱為是持久層 ,其功能主要是負責資料庫的訪問,可以訪問資料庫系統 、二進位制檔案 、文字文件 或是

xml 文件 。 

簡單的說法就是實現 對資料表的

select

,insert

,update

,delete

的操作 。如果要加入

orm的元素,那麼就會包括物件和資料表之間的

,以及物件實體的持久化。

優缺點

優點:1

、開發人員可以只關注整個結構中的其中某一層; 2

、可以很容易的用新的實現來替換原有層次的實現; 3

、可以降低層與層之間的依賴; 4

、有利於標準化; 5

、利於各層邏輯的復用。

缺點:1

、降低了系統的效能。這是不言而喻的。如果不採用分層式結構,很多業務可以直接造訪資料庫,以此獲取相應的資料,如今卻必須通過中間層來完成。 2

、有時會導致級聯的 修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加乙個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和資料訪問層中都增加相應的**。

規則

三層結構的程式不是說把專案分成

dal, bll, webui

三個模組就叫三層了

, 下面幾個問題在你的專案裡面:

1. uilayer

裡面只有少量

(或者沒有)的

sql語句或者儲存過程呼叫

, 並且這些語句保證不會修改資料?

2. 如果把

uilayer

拿掉,

你的專案還能在

inte***ce/api

的層次上提供所有功能嗎?

3. 你的

dal可以移植到其他類似環境的專案嗎?

4. 三個模組

, 可以分別執行於不同的伺服器嗎?

如果不是所有答案都為

yes,

那麼你的專案還不能算是嚴格意義上的三層程式

. 三層程式有一些需要約定

遵守的規則 :

1. 最關鍵的

, ui

層只能作為乙個外殼

, 不能包含任何

bizlogic

的處理過程

2. 設計時應該從

bll出發

, 而不是

ui出發

. bll

層在 api

上 應該實現所有

bizlogic ,

以物件導向的方式

3. 不管資料層是乙個簡單的

sqlhelper

也好,

還是帶有

過的classes

也好,

應該在一定的抽象程度上 做到系統無關

4. 不管使用

com+(enterprise service),

還是remoting,

還是webservice 之類

的遠端物件技術

, 不管部署的時候是不是真的分別部署到不同的伺服器上

, 最起碼在設計的時候要做這樣的考慮

, 更遠的

, 還得考慮多台伺服器 通過負載均衡作集群

所以考慮乙個專案是不是應該應用三層

/ 多層設計 時

, 先得考慮下是不是真的需要

? 實際上大部分程式 就開個

就足夠了

, 完全沒必要作的這麼複雜

. 而多層結構

, 是用於解決真正複雜的專案需求的 。

mvc的區別

mvc(模型model-

檢視view-

控制器controller

)是一種設計模式 ,

我們可以用它來建立在域物件 和 ui

表示層物件 之間

的區分。

同樣是架構級別的,相同的地方在於他們都有乙個表現層,但是他們不同的地方在於其他的兩個層。

在三層架構中沒有定義

controler

的概念。這是我認為最不同的地方。而

mvc也沒有把業務的邏輯訪問看成兩個層 ,這是採用三層架構或

mvc搭建程式最主要的區別 。當然了。在三層中也提到了

model

,但是三層架構中

model

的概念與

mvc中

model

的概念是不一樣的,「三層

」中典型的

model

層是已實體類 構成的,而

mvc裡,則是由業務邏輯與訪問資料組成的

資料庫 三層架構

資料層 dal 業務邏輯層 bll 表示層 ui 三層結構原理 3個層次中,系統主要功能和業務邏輯都在業務邏輯層進行處理。所謂三層體系結構,是在客戶端與資料庫之間加入了乙個 中間層 也叫元件層。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三颱機器就是三層體系結構,也不僅僅有b s應用才是三...

資料庫的三層架構

三層模式體系結構和資料獨立性 第1.3節中列出了資料庫方法的4個重要特點,其中有以下3個特點 1 程式與資料分離 程式 資料獨立性和程式 操作獨立性 2 支援多使用者檢視 3 使用編目儲存資料庫描述 模式 在這一節中,我們將為資料庫系統指定乙個體繫結構,這稱為三層模式體系結構 three schem...

資料庫連線的三層架構

一 什麼是三層架構 1.概念 三層架構 3 tier architecture 通常意義上的三層架構就是將整個業務應用劃分為 表現層 ui 業務邏輯層 bll 資料訪問層 dal 區分層次的目的即為了 高內聚,低耦合 的思想。分層 tier 概念 表現層 ui 通俗講就是展現給使用者的介面,用於顯示...