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