三層架構與MVC
1. 三層架構是什么
把各個功能模塊划分為表示層,業務邏輯層,和數據訪問層三層架構,各層之間采用接口相互訪問,並通過對象模型的實體類(model)作為數據傳遞的載體,不同的對象模型實體類一般對應數據庫的不同表。
上層對下層的調用是通過接口實現的;下層對上層的真正服務提供者,是下層接口的實現類。
接口是相同的額,實現類是可以更換的。
2. 三層架構的目的
“高內聚,低耦合”
3.分層方式
- 表示層(視圖層View)
在表示層調用業務層的方法,前台設計,相關控件,數據緩存都屬於表示層。
就是實現用戶界面,將用戶的需求傳達和反饋。
- 業務層(服務層Service)
數據訪問的邏輯放在業務層。對具體問題進行邏輯判斷與執行操作;
接收到表現層 的用戶指令后,會連接數據訪問層,作為表示層和數據層的橋梁,實現三層之間的數據連接和指令傳達,對 接收數據 進行邏輯處理,實現數據的修改,獲取,刪除等功能,並將處理結果反饋到表示層,實現軟件功能。
-
數據層(持久層Dao)
包含所建的數據庫和一些存儲過程(實現數據訪問,分頁,搜索算法等),被業務層調用
是數據庫的主要操作系統,實現 數據庫 的增刪改查等操作,並將操作結果反饋到業務邏輯層
在實際運行的過程中,數據訪問層沒有邏輯判斷能力,為了實現代碼編寫的嚴謹性,提高代碼閱讀程度,一般軟件開發人員會在該層中編寫 Data AccessCommon,保證數據訪問層 數據處理功能。
-
實體類庫
實體類庫是數據庫表的映射對象,在開發過程中,要建立對象實例,將關系數據庫表采用對象實體化的方式表現出來,利用 GET 與 SET 把數據庫表中的所有字段映射為系統對象,建立實體類庫,進而實現各個結構層的參數傳輸,服務於其他三層。
舉例:
假設數據庫里有一個表 BOOKS(書),建立一個存儲過程 GetAllBooks,用來讀取書的信息,這樣在業務層里編一個方法 GetBookS()和一個公用數據庫訪問類,GetBooks()就通過數據庫訪問類打開連接,執行在存儲過程,返回數據 (返回類型可以是 DataT - able,DataSet,DataReader 或 者 實 體 類)。業務層單獨編譯成一個或者幾個 DLL 文件。表示層通過調用GetBookS()返回數據綁定在相關的控件里。
4. 數據庫與應用服務器的連接
應用服務器利用SQL語言進行連接數據庫服務器。
5.什么是MVC
- View
視圖,為用戶提供界面,與用戶直接進行交互,處理數據可視化的部分。
- Model
模型,用於處理應用程序數據邏輯的部分,實現增刪改查功能,通常負責在數據庫中存取數據,代表一個存取數據的對象或JAVA POJO
- Controller
控制器,處理用戶交互的部分。通常負責從視圖讀取數據,控制用戶輸入,並向model發送數據,在數據變化時更新視圖。
1)接受請求,並將該請求跳轉(轉發,重定向)到模型進行處理
2)模型處理完畢后,再通過控制器,返回給視圖中的請求。
當單機web頁面中超鏈接和發送表單時,控制器本身不輸出任何東西和做任何處理,僅對請求進行解析。他只是接受請求並決定調用哪個模型構建去處理請求,在確定用哪個視圖來顯示返回的數據。
6. MVC與三層架構的關系
7.一個簡單的業務流程
- web視圖發送一個請求 去往一個接口,比如
/login
- 找到對應的
Controller
,在spring 中具體路徑體現為RequestMapping("/login")
- 訪問這個路徑,執行該``RequestMapping`中的邏輯
Controller
找到對應的Service
Service
找到對應的Dao
Dao
聯合Model(Bean)
操作數據庫- 返回結果給
Controller
Controller
對結果進行處理