三层基础知识梳理
在沒學(xué)習(xí)三層之前,我的“今目標”中的項目名稱是MVC分層。有一段時間我搞不清這兩個是什么概念,有何不同,我找了一些資料,現(xiàn)在還不能很好地理解。先分享一下。
三層架構(gòu)是界面層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)構(gòu)成的,而MVC是模型層(M)、界面層(View)、控制層(Controller)構(gòu)成的,而且它們之間也不對應(yīng)。如果硬要給他們對應(yīng)的話,那么三層架構(gòu)中的UI對應(yīng)MVC中的view(jsp),都是用于顯示以及獲取界面的數(shù)據(jù);三層架構(gòu)中的BLL層和DAL層對應(yīng)MVC中的Model(javabean)層都是用于處理上層傳遞來的數(shù)據(jù)以及從數(shù)據(jù)庫獲取的數(shù)據(jù)的;MVC中的Controller(Servlet)最多算是三層架構(gòu)中的UI的一部分,也就我們常說的是Servlet。如圖:
這兩者核心的部分是“分層,解耦”。從這個角度看,三層架構(gòu)和MVC又是一致的,只不過劃分方法不同。
下面是我對三層基本知識的梳理。
1:每一層是什么以及有什么作用。
U層(顯示層---User Interface):向用戶展現(xiàn)特定業(yè)務(wù)數(shù)據(jù),采集用戶的輸入信息和操作。
B層(業(yè)務(wù)邏輯層---Business Logic Layer):從DAL中獲取數(shù)據(jù),以供UI顯示用;從UI中獲取用戶指令和數(shù)據(jù),執(zhí)行業(yè)務(wù)邏輯;從UI中獲取用戶指令和數(shù)據(jù),通過DAL寫入數(shù)據(jù)源。B層的職責(zé)機制有兩種:一種是UI--->BLL--->UI;另一種為UI--->BLL--->DAL---BLL--->UI.
D層(數(shù)據(jù)訪問層---Data Access Layer):從數(shù)據(jù)源加載數(shù)據(jù);向數(shù)據(jù)源寫入數(shù)據(jù);從數(shù)據(jù)源刪除數(shù)據(jù)。這里的數(shù)據(jù)源不一定是數(shù)據(jù)庫,還可以是XML。
此外:還有一個業(yè)務(wù)數(shù)據(jù)模型,比較傾向于業(yè)務(wù)邏輯層。封裝數(shù)據(jù)。在三層之間傳送數(shù)據(jù)的。獨立于其他三個層次。model不會引用其他三個程序集。而其他都引用model。
2.在具體項目中的應(yīng)用原則:
U層:只負責(zé)采集和顯示用戶操作,不包含任何的業(yè)務(wù)相關(guān)的邏輯處理。
B層:負責(zé)處理業(yè)務(wù)邏輯。通過獲取UI傳來的操作指令,決定執(zhí)行業(yè)務(wù)邏輯,在需要訪問數(shù)據(jù)源的時候直接交給DAL處理,處理完成后,返回必要數(shù)據(jù)給UI。
D層:只提供基本的數(shù)據(jù)訪問,不包含任何相關(guān)的業(yè)務(wù)處理。
3.各層的引用關(guān)系:
UI--->BLL--->DAL
UI直接引用BLL,可能會間接地引用DAL;BLL需要引用DAL;DAL程序集不引用BLL和UI。
當(dāng)然要想真正的明白,還需要在實踐中練習(xí)。實例練習(xí)請見下一篇博客。
總結(jié)
- 上一篇: 对抽象工厂+反射+配置文件的实例理解
- 下一篇: 简单工厂模式,抽象工厂模式,反射工厂模式