MVC與三層架構(gòu)
系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)是指,整合應(yīng)用系統(tǒng)程序大的結(jié)構(gòu)。經(jīng)常提到的系統(tǒng)結(jié)構(gòu)有兩種:
- 三層架構(gòu)
- MVC
這兩種結(jié)構(gòu)既有區(qū)別,又有聯(lián)系。但這兩種結(jié)構(gòu)的使用,均是為了降低系統(tǒng)模
塊間的耦合度。
三層架構(gòu)
三層架構(gòu)是指:視圖層 View、服務(wù)層 Service,與持久層 Dao。它們分別完成不同的功能。
- View 層:用于接收用戶提交請求的代碼在這里編寫。
- Service 層:系統(tǒng)的業(yè)務(wù)邏輯主要在這里完成。
- Dao 層:直接操作數(shù)據(jù)庫的代碼在這里編寫。
為了更好的降低各層間的耦合度,在三層架構(gòu)程序設(shè)計中,采用面向抽象編程。
即上層對下層的調(diào)用,是通過接口實現(xiàn)的。
而下層對上層的真正服務(wù)提供者,是下層接口的實現(xiàn)類。
服務(wù)標準(接口)是相同的,服務(wù)提供者(實現(xiàn)類)可以更換。
這就實現(xiàn)了層間解耦合。
MVC
MVC,即 Model 模型、View 視圖,及 Controller 控制器。
- View:視圖,為用戶提供使用界面,與用戶直接進行交互。
- Model:模型,承載數(shù)據(jù),并對用戶提交請求進行計算的模塊。其分為兩類:
一類稱為數(shù)據(jù)承載 Bean:實體類,專門用戶承載業(yè)務(wù)數(shù)據(jù)的,如 Student、User 等
一類稱為業(yè)務(wù)處理 Bean:指 Service 或 Dao 對象,專門用于處理用戶提交請求的。 - Controller:控制器,用于將用戶請求轉(zhuǎn)發(fā)給相應(yīng)的 Model 進行處理,并根據(jù) Model 的計算結(jié)果向用戶提供相應(yīng)響應(yīng)。
MVC 架構(gòu)程序的工作流程:
(1)用戶通過 View 頁面向服務(wù)端提出請求,可以是表單請求、超鏈接請求、AJAX 請求等
(2)服務(wù)端 Controller 控制器接收到請求后對請求進行解析,找到相應(yīng)的 Model 對用戶請求進行處理
(3)Model 處理后,將處理結(jié)果再交給 Controller
(4)Controller 在接到處理結(jié)果后,根據(jù)處理結(jié)果找到要作為向客戶端發(fā)回的響應(yīng) View 頁面。頁面經(jīng)渲染(數(shù)據(jù)填充)后,再發(fā)送給客戶端。
MVC與三層架構(gòu)的關(guān)系:
SSM,即 SpringMVC、Spring 與 MyBatis 三個框架。它們在三層架構(gòu)中所處的位置是不同的,即它們在三層架構(gòu)中的功能各不相同,各司其職。
- SpringMVC:作為 View 層的實現(xiàn)者,完成用戶的請求接收功能。SpringMVC 的 Controller作為整個應(yīng)用的控制器,完成用戶請求的轉(zhuǎn)發(fā)及對用戶的響應(yīng)。
- MyBatis:作為 Dao 層的實現(xiàn)者,完成對數(shù)據(jù)庫的增、刪、改、查功能。
- Spring:以整個應(yīng)用大管家的身份出現(xiàn)。整個應(yīng)用中所有 Bean 的生命周期行為,均由Spring 來管理。即整個應(yīng)用中所有對象的創(chuàng)建、初始化、銷毀,及對象間關(guān)聯(lián)關(guān)系的維護,均由 Spring 進行管理。
作者:JS_HCX
鏈接:https://www.jianshu.com/p/731d027b2d91
來源:簡書
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。