MVC,SSM框架與三層架構(gòu)

本文主要想談的內(nèi)容有:


1.為什么要有架構(gòu)?2.三層架構(gòu)是什么?3.MVC框架是什么?

4.MVC框架和三層架構(gòu)的關(guān)系?5.MVC框架的工作流程?6.SSM框架和三層架構(gòu)的關(guān)系?


1.為什么要有架構(gòu)?

這是為了滿足“低耦合,高內(nèi)聚”,實(shí)現(xiàn)代碼的健壯性和可擴(kuò)展性。比如為了更好的降低各層間的耦合度,在三層架構(gòu)程序設(shè)計(jì)中,采用面向抽象編程。即上層對(duì)下層的調(diào)用,是通過接口實(shí)現(xiàn)的。而下層對(duì)上層的真正服務(wù)提供者,是下層接口的實(shí)現(xiàn)類。服務(wù)標(biāo)準(zhǔn)(接口)是相同的,服務(wù)提供者(實(shí)現(xiàn)類)可以更換。

2.三層架構(gòu)是什么?

三層架構(gòu)由用戶界面層/表示層(User Interface),業(yè)務(wù)邏輯層(Business Logic Layer)和數(shù)據(jù)訪問層(Data Acess Layer)構(gòu)成。

其中每一層的作用為:

用戶界面層:負(fù)責(zé)與用戶進(jìn)行交互。

業(yè)務(wù)邏輯層:主要是針對(duì)具體的問題的操作,也可以理解成對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理。

數(shù)據(jù)訪問層:主要是對(duì)非原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,也就是說是對(duì)數(shù)據(jù)庫,而不是對(duì)數(shù)據(jù)的操作,具體為業(yè)務(wù)邏輯層或用戶界面層提供數(shù)據(jù)服務(wù)。

舉個(gè)例子:

訪問一個(gè)網(wǎng)站。用戶需要經(jīng)歷的過程有:在瀏覽器輸入 url,然后瀏覽器向 Server 發(fā)起一個(gè) http 請(qǐng)求,Server 拿到這個(gè) http 請(qǐng)求之后會(huì)根據(jù)相關(guān)的條件到數(shù)據(jù)庫查詢相關(guān)數(shù)據(jù),然后把數(shù)據(jù)以特定的格式(網(wǎng)站是 html 格式)返回給瀏覽器,瀏覽器再根據(jù)特定數(shù)據(jù)渲染出相應(yīng)頁面。那么:

對(duì)用戶來說,瀏覽器就是用戶界面層,它主要是與用戶交互的頁面,根據(jù)用戶的輸入與事件,處理并顯示返回的特定數(shù)據(jù)。

連接表示層與數(shù)據(jù)訪問層的就是業(yè)務(wù)邏輯層,這包括后端程序中模型設(shè)計(jì)、驗(yàn)證、業(yè)務(wù)規(guī)則、各種計(jì)算等。

Server 端必須要一個(gè)強(qiáng)大的數(shù)據(jù)庫來存儲(chǔ)所有用戶交互產(chǎn)生的數(shù)據(jù),而對(duì)這些數(shù)據(jù)的處理,包括增、刪、改、查就屬于數(shù)據(jù)訪問層。

三層架構(gòu)圖示:

3.MVC框架是什么?

MVC框架是由Model模型(JavaBean),View視圖(Jsp) 和 Controller控制器(Servlet)構(gòu)成

其中每一部分的作用為:

Model:承載數(shù)據(jù),并對(duì)用戶提交請(qǐng)求進(jìn)行計(jì)算的模塊。其分為兩類,一類稱為數(shù)據(jù)承載Bean,一類稱為業(yè)務(wù)處理Bean。所謂數(shù)據(jù)承載Bean是指實(shí)體類,專門承載業(yè)務(wù)數(shù)據(jù)的,如Student、User等。而業(yè)務(wù)處理Bean則是指Service或Dao對(duì)象,專門用于處理用戶提交請(qǐng)求的。

View:為用戶提供使用界面,與用戶直接進(jìn)行交互

Controller:用于將用戶請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的Model進(jìn)行處理,并將處理Model的計(jì)算結(jié)果向用戶提供相應(yīng)響應(yīng)。

MVC圖示:


4.MVC框架和三層架構(gòu)的關(guān)系?

三層架構(gòu)是一種軟件領(lǐng)域最普遍的分層式架構(gòu),而 MVC 是在三層架構(gòu)的基礎(chǔ)上設(shè)計(jì)的一種框架型架構(gòu),三層架構(gòu)是一種宏觀的概念,而 MVC 就是一種比較具體的三層架構(gòu)的框架實(shí)現(xiàn),我們?cè)?MVC 的基礎(chǔ)上把不同類別的代碼文件進(jìn)行分類就可以了

一般認(rèn)為View 層和 Controller 層都屬于三層架構(gòu)的用戶界面層,而Model屬于業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層

圖示:

(圖片來源于公眾號(hào)科幫網(wǎng))

有的認(rèn)為model只屬于業(yè)務(wù)邏輯層,理由如下:

人認(rèn)為 Model 層除了定義業(yè)務(wù)需要的實(shí)體類與簡(jiǎn)單的邏輯算法處理之外,還應(yīng)該包括對(duì)數(shù)據(jù)庫的操作、對(duì)網(wǎng)絡(luò)等的操作等,這對(duì)后端開發(fā)來說沒問題,因?yàn)楹蠖说臄?shù)據(jù)全部來源于數(shù)據(jù)庫,而且后端可以很方便的跟數(shù)據(jù)服務(wù)器進(jìn)行連接,而 Model 的業(yè)務(wù)邏輯大多都是來自對(duì)數(shù)據(jù)的處理,所以這種方式很正常。

但是對(duì)于客戶端來說差別就大了,我們知道客戶端的數(shù)據(jù)來源大多來自服務(wù)端的接口請(qǐng)求,但是很可能同時(shí)有本地?cái)?shù)據(jù)庫、本地的文件都能提供數(shù)據(jù),比如可能會(huì)有離線操作,比如可能為了用戶體驗(yàn),用戶斷網(wǎng)的時(shí)候會(huì)做緩存處理,也就是說客戶端的數(shù)據(jù)來源有多種多樣,而 Model 本身的主要職責(zé)應(yīng)該定義業(yè)務(wù)需要的數(shù)據(jù)模型以及簡(jiǎn)單的邏輯處理,如果同時(shí)也要處理本地?cái)?shù)據(jù)庫與網(wǎng)絡(luò)數(shù)據(jù)未免變得臃腫起來,而且職責(zé)不清晰。

圖示:

總的來說:MVC與三層架構(gòu)并不是一一對(duì)應(yīng)的,MVC只是三層架構(gòu)基礎(chǔ)上設(shè)計(jì)的具體框架

5.MVC框架的工作流程?

用戶通過View頁面向服務(wù)端提出請(qǐng)求,可以是表單請(qǐng)求、超鏈接請(qǐng)求、AJAX請(qǐng)求等。

服務(wù)端Controller控制器接收到請(qǐng)求后對(duì)請(qǐng)求進(jìn)行解析,找到相應(yīng) 的Model對(duì)用戶請(qǐng)求進(jìn)行處理。

Model處理后,將處理結(jié)果再交給Controller

Controller在接到處理結(jié)果后,根據(jù)處理結(jié)果找到要作為向客戶端發(fā)回的響應(yīng)View頁面。頁面經(jīng)渲染(數(shù)據(jù)填充)后,再發(fā)送給客戶端

圖示:

6.SSM與三層架構(gòu)關(guān)系?

SSM主要由Spring,SpringMVC 和 Mybatis三個(gè)構(gòu)成。它們?cè)谌龑蛹軜?gòu)中所處的位置是不同的,即它們?cè)谌龑蛹軜?gòu)中的功能各不相同,各司其職

SpringMVC:作為View層的實(shí)現(xiàn)者,完成用戶的請(qǐng)求接收功能。SpringMVC的Controller作為整個(gè)應(yīng)用的控制器,完成用戶請(qǐng)求的轉(zhuǎn)發(fā)及對(duì)用戶的響應(yīng)

MyBatis:作為 Dao層的實(shí)現(xiàn)者,完成對(duì)數(shù)據(jù)庫的增、刪、改、查功能

Spring:以整個(gè)應(yīng)用大管家的身份出現(xiàn)。整個(gè)應(yīng)用中所有的Bean的生命周期行為,均由Spring來管理。即整個(gè)應(yīng)用中所有對(duì)象的創(chuàng)建、初始化、銷毀,及對(duì)象間關(guān)聯(lián)關(guān)系的維護(hù),均由Spring進(jìn)行管理

關(guān)系圖示:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容