三層結構的認識

三層結構的認識html

 

這幾天我在看三層的有關資料,對其有了一點的初步認識,如今對這一點點的認識作一下總結。數據庫

 

1、三層的劃分方式:物理上和邏輯上服務器

 

所謂的兩層或是三層結構,它又分爲物理上的劃分和邏輯上的劃分。架構

 

        ◆ 物理上的三層:顯示層/業務層/數據層app

 

       物理上的劃分,能夠理解爲硬件上的劃分,由於咱們設計的程序架構都是跑在計算機上的,不管是跑在客戶機上、服務器上或者是終端機上的,終究它是跑在硬件上的。框架

 

        在三層以前就有兩層結構或者是單層結構。設計

        1)下面的圖1 是一張典型的CS「客戶機」端和「服務器」端的兩層物理結構圖。orm

 

 

 

        「客戶機」端有用戶界面和應用邏輯,「服務器」端就是數據庫服務器。htm

        客戶機是PC機或是智能機,對象

 

        2)下面咱們再看一下三層的物理結構圖

 

 

 物理上的三層:顯示層/業務層/數據層

 顯示層,是PC機

 業務層,是應用服務器。

 數據層,數據庫服務器。

 

◆ 邏輯上的三層:UI/BLL+DAL/DB

 

        注意:三層結構的物理劃分和邏輯上的劃分,能夠區分出:BLL和DAL都有可能跑在應用服務器上的,而不是數據庫服務器上。

 

        在這裏咱們主要討論的三層是指邏輯的三層,是在數據庫之上討論的三層:UI、BLL、DAL。

 

2、三層的應用場景

 

        咱們爲何要使用三層架構?  什麼狀況下不使用三層架構?

        首先要清楚一點,並非全部的系統都須要使用三層架構的。

        第一,業務邏輯簡單;第二,沒有真正的數據存儲層,因此也就不須要數據訪問層,這是就不須要使用三層架構。

        只有業務邏輯複雜,既有數據訪問層,又有業務邏輯層(BLL層),才須要使用三層架構的。

 

3、三層的結構

 

(1)數據訪問層(DAL)

◆  DAL的做用

     從數據源加載數據(Select)

     向數據源寫入數據(Insert/Update)

     從數據源刪除數據(Delete)

◆ DAL中經常使用的技術

     ADO.NET+SQL語句

     O/R Mapping框架     NHiberate(關係模型轉換爲對象模型)

     訪問SQL Sever數據庫時Linq to SQL(它是單表映射)

     因此說,DAL的職責:是與數據源打交道,讀數據、寫數據、刪數據.

(2)顯示層(UI層)

         ◆ UI的做用

              向用戶展示特定業務數據

              採集用戶的輸入信息和操做

 

         ◆ UI設計的原則

              用戶至上,兼顧簡潔

 

         ◆中的經常使用技術

             WindowsForm:Form 、Control

             ASP.NET:aspx 、ascx 、master 、html

 

(3)業務邏輯層(BLL)

 

          ◆ BLL的做用

             從DAL中獲取數據,以供UI層顯示用

             從UI中獲取用戶指令和數據,執行業務邏輯

             從UI中獲取用戶指令和數據,經過DAL寫入數據源。

 

        ◆ BLL的職責機制

             UI→BLL→UI

     UI→BLL→DAL→BLL→UI

 

總結:三層的關係

 

DAL只提供基本的數據訪問,不包含任何業務相關的邏輯處理。

UI只負責顯示和採集用戶操做,不包含任何的業務相關的邏輯處理。

        BLL負責處理業務邏輯。經過獲取UI傳來的操做指令,決定執行業務邏輯,在須要訪問數據源的時候直接交給DAL處理,處理完成後,返回必要數據給UI.

 

DAL/BLL/UI分別在不一樣的程序集中

各個層之間的引用關係

UI→BLL→DAL

DAL所在程序集不引用BLL和UI

BLL須要引用DAL

UI直接引用BLL,可能會間接引用DAL。

相關文章
相關標籤/搜索