三層架構3-tier architecture 通過幾個問題,來初步的學習一下三層架構。 1、什么是三層架構 2、應用場景為什么要用三層架構? 3、三層作用 4、各個層之間的關系 5、三層聯系引用 6、各層是如何調用的 7、三層和二層的對比 這幾個都是學習三層中最基本的問題
在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。三層從下至上分別為:數據訪問層(DAL)、業務邏輯層(BLL)、表示層(UI)。
表現層(UI):展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
業務邏輯層(BLL):對數據層的操作,對數據業務邏輯處理。
數據訪問層(DAL):對數據庫的操作,數據的增添、刪除、修改、查找等。
為什么要用三層架構?
解耦!
不是所有的程序都需要使用三層架構,沒必要把簡單的問題復雜化。
先來說一下解耦,舉例:修電腦
電腦硬盤壞了?我們要做的就是換掉電腦硬盤
內存條壞了?只要換內存條就好
這些部件出現問題,都不會影響別的部件的正常使用,這個就是讓他們之間解耦。而和電腦不同的收音機,任何部件壞了,都會影響別的部件,這個體現的就是他們之間的耦合比較高。從這個例子里面就可以看出解耦的好處,在三層中就是用的解耦的思想。
數據訪問層:從數據源加載(Select),寫入(Insert/Update),刪除(Delete)數據。僅限于和數據源打交道,讓程序簡單明了。
顯示層(UI):向用戶展現特定業務數據,采集用戶的輸入信息和操作。
原則:用戶至上,兼顧簡潔。
業務邏輯層(BLL):從DAL中獲取數據,以供UI顯示用,從UI中獲取用戶指令和數據,執行業務邏輯、從UI中獲取用戶指令和數據,通過DAL寫入數據源。
UI->BLL->UI:UI提供數據指令到業務邏輯,若自己可以搞定,則直接反饋到UI
UI->BLL->DAL->BLL->DAL:UI提供用戶指令和數據,提出請求并搜集一定的數據BLL,BLL處理不了時,要訪問數據源,則轉給DAL
以登陸為例子,說明三層之間的引用關系:
實體層(entity):定義的用戶名和密碼。
U層:向對應的文本框中輸入賬號和密碼
B層:判斷U層輸入的賬號和密碼是否存在。
D層:連接數據庫的語句,查詢數據庫。
他們之間的聯系是通過實體傳遞來進行的,。
DAL所在程序集不引用BLL和UI
BLL需要引用DAL
UI直接引用DAL,可能引用BLL
非常忌諱互相引用,為了避免這個問題所有出現了實體層(業務數據模型,里面的數據和數據庫的有所差異)
DAL只提供基本的數據訪問,不包含任何業務相關的邏輯處理。UI只負責顯示和采集用戶操作,不包含任何的業務相關的邏輯處理,BLL負責處理業務邏輯,通過獲取UI傳來的操作指令,決定執行業務邏輯,在需要訪問數據源的時候直接交給DAL處理。處理完成后,返回必要數據給UI。
表示層(UI)是用戶需要的界面,用戶有什么需求都是在這個上面進行的改動,一旦有改動,首先U層向B層發送用戶請求的說明,到達B層,B層再將U層的用戶請求發送到D層,D層接受到用戶請求的指令后,對它進行處理,發送數據反饋到B層,B層再發給U層,將這一變化反應出來。
舉例:
小菜和大鳥吃羊肉串的例子,小菜和大鳥就是用戶,服務員為表示層(U層),烤肉師父為業務邏輯層(U層引用B層的方法或者參數),老板娘為數據訪問層(D層),負責給烤肉師父從庫房拿烤串。大鳥點了羊肉串5串(參數),服務員把羊肉串5串(參數傳遞)傳遞給烤肉師父(數據請求),烤肉師父再傳遞給老板娘(對參數進行處理),老板娘得到請求后,拿羊肉串給烤肉師父(數據反饋),烤肉師父將烤好的羊肉串給服務員(數據反饋),服務員再將5串羊肉串給大鳥(U層展現出來),他們之間通過調用來實現聯系。
業務邏輯簡單,沒有真正的數據存儲層
抽象出業務邏輯層,當業務復雜到一定程度,當數據存儲到相應的存儲介質,數據存儲脫離開業務邏輯,把業務邏輯脫離開UI單獨存在,UI只需要呼叫業務訪問層,就可以實現跟用戶的交互。
1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利于標準化;
5、利于各層邏輯的復用。
6、結構更加的明確
7、在后期維護的時候,極大地降低了維護成本和維護時間。
這幾點的中心思想就是“高內聚,低耦合”,類之間的耦合越弱,越有利于復用,一個處在弱耦合的類被修改,不會對有關系的類造成波及。
以上是對三層的簡單認識,有的地方可能寫的不對,歡迎指出!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com