天天看點

【機房重構】三層結構概述應用場景資料通路層顯示層業務邏輯層具體應用

結構概述

  • 多層結構的劃分方式:實體、邏輯
【機房重構】三層結構概述應用場景資料通路層顯示層業務邏輯層具體應用
  • 兩層/三層結構
  • 實體上的三層:顯示層、業務層、資料層
【機房重構】三層結構概述應用場景資料通路層顯示層業務邏輯層具體應用
  • 邏輯上劃分VS實體上劃分
    • 實體:顯示層、業務層、資料層
    • 邏輯:UI、BLL+DAL、DB

我們讨論的是UI(顯示層)、BLL(業務邏輯層)、DAL(資料通路層)

為什麼要分層?

1、解耦

目的是為了“高内聚、低耦合”

内聚:一個子產品内各個元素彼此結合的緊密程度

耦合:一個軟體結構内不同子產品之間互連程度的度量

2、複雜問題簡單化

各個分層分工明确,将一個複雜問題簡單拆分了

3、便于系統維護與更新

各層間通過接口解耦,接口與實作分離,進而可以非常簡單的替換掉實作,或者實際實作

4、為了管理和維護

使軟體開發有條理有秩序,一目了然

UI、BLL、DAL分别是什麼?

UI(表現層):展現給使用者的界面

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

DAL(資料通路層):所做事務直接操作資料庫,針對資料的增、删、改、查。将存儲在資料庫中的資料送出給B層,同時将B層處理的資料儲存在資料庫

D層的這些操作都是基于U層的。使用者的需求反映給界面U層,U層反映到B層,B層反映給D層,D層進行資料的操作,操作後再一一傳回,直到将使用者所需資料回報給使用者

應用場景

為什麼要使用三層架構?

代碼量比之前少

修改也友善

實作了代碼的重用性

什麼情況下需要使用?

1、既有資料通路層

2、也有業務邏輯層(BLL層)

當業務複雜到一定程度後,當資料存儲到相應的資料庫或者獨立的資料存儲媒體的情況下,需要使用三層結構

什麼情況下不需要三層結構?

1、業務邏輯簡單

2、沒有真正的資料存儲層

資料通路層

DAL的作用

  • 從資料源加載資料(Select)
  • 向資料源寫入資料(Insert、Update)
  • 從資料源删除資料(Delete)

登入操作

public class UserDAO
{
    public bool SelectUser(string userName,string Prossword)
    {
       throw new NotImplementedException();
    }
}
           

具體操作資料源的具體對象

public class ScoreDAO
{
   public void UpdateScore(string userName,int value)
   {
      throw new NotImplementedException();
   }
}
           

顯示層

UI的作用

  • 向使用者展現特定業務資料
  • 采集使用者的輸入資訊和操作

UI設計的原則

  • 使用者至上
  • 兼顧簡潔

業務邏輯層

BLL的作用

  • 從DAL中擷取資料,以供U層顯示用
  • 從U層中擷取使用者指令和資料,執行業務邏輯
  • 從U層中擷取使用者指令和資料,通過D層寫入資料源

BLL的職責機制

  • UI->BLL->UI
  • UI->BLL->DAL->BLL->UI

具體應用

原則

DAL:隻提供基本的資料通路,不包含任何業務相關的邏輯處理

UI:負責顯示和采集使用者操作,不包含任何的業務相關的邏輯處理

BLL:負責處理業務邏輯。通過擷取UI傳來的操作指令,決定執行業務邏輯,在需要通路資料源的時候直接交給DAL處理。處理完成後,傳回必要資料給UI

程式集(Assembly)

  • DAL、B:LL、UI分别在不同的程式集中
  • 各個層之間的引用關系
    • UI->BLL->DAL
      • DAL所在程式集不引用BLL和UI
      • BLL需要引用DAL
      • UI直接引用BLL。可能會間接引用DAL