• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 什么是系統的三層架構?

    發表于:2013-05-29來源:Csdn作者:趙媛媛點擊數: 標簽:架構
    什么是系統的三層架構? 三層架構(3-tier architecture) 通常是指將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。目的是“高內聚,低耦合”的思想。

      一、概念:

      三層架構(3-tier architecture) 通常是指將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。目的是“高內聚,低耦合”的思想。

      1、表現層(UI):是展現給用戶的界面。

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

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

      二、原理:

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

      解析:三層體系的應用程序將業務規則、數據訪問、合法性校驗等工作放到了中間層進行處理。通常情況下,客戶端不直接與數據庫進行交互,而是通過COM/DCOM通訊與中間層建立連接,再經由中間層與數據庫進行交互。

      三層是指邏輯上的三層,而不是物理上的三層!

      解析:所謂三層體系結構,是在客戶端與數據庫之間加入了一個“中間層”,也叫組件層。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構,也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一臺機器上。

      三、各層的作用

      1、表現層:

      位于最外層(最上層),離用戶最近。用于顯示數據和接收用戶輸入的數據,以及數據的返回,為用戶提供一種交互式操作的界面。

      2、業務邏輯層(BusinessLogic Layer)

      是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理。主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計,也即是說它是與系統所應對的領域(Domain)邏輯有關。很多時候,也將業務邏輯層稱為領域層。

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

      3、數據層

      數據訪問層:有時候也稱為是持久層,主要功能是對原始數據(數據庫或者文本文件等存放數據的形式)的操作層,而不是指原始數據,也就是說,是對數據的操作,而不是數據庫,具體為業務邏輯層或表示層提供數據服務。簡單的說法就是實現對數據表的Select,Insert,Update,Delete的操作。

      四、優缺點

      1、優點

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

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

      3) 可以降低層與層之間的依賴;

      4) 有利于標準化;

      5) 利于各層邏輯的復用。

      6) 結構更加的明確

      7) 在后期維護的時候,極大地降低了維護成本和維護時間。

      2、缺點

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

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

      3) 增加了開發成本。

    原文轉自:http://blog.csdn.net/lantingxv_jing/article/details/8946983

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>