MVC與三層架構(gòu)

一、簡(jiǎn)述

在軟件開(kāi)發(fā)中,MVC與三層架構(gòu)這兩個(gè)專(zhuān)業(yè)詞匯經(jīng)常耳聞,同時(shí)總有很多人將它們混為一談,認(rèn)為三層架構(gòu)就是指MVC,給它畫(huà)上等號(hào),但實(shí)際上,這是錯(cuò)誤的認(rèn)知,并不是說(shuō)它們沒(méi)有任何關(guān)系,而是MVC與三層架構(gòu)不是簡(jiǎn)單的相等。下面將拿javaweb開(kāi)發(fā)中的MVC(SSM框架)與三層架構(gòu)進(jìn)行比較,讓大家理清兩者之間的關(guān)系。

二、概念

1、系統(tǒng)架構(gòu)

所謂系統(tǒng)架構(gòu)是指整個(gè)應(yīng)用系統(tǒng)程序大的結(jié)構(gòu),常見(jiàn)的系統(tǒng)架構(gòu)有三層架構(gòu)與MVC。前面已經(jīng)說(shuō)了,三層架構(gòu)與MVC不是簡(jiǎn)單的相等,它們存在差別,但又聯(lián)系。現(xiàn)在可以肯定的是,這兩種系統(tǒng)架構(gòu)的出現(xiàn),都是為了降低系統(tǒng)模塊間的耦合度。

2、三層架構(gòu)

三層架構(gòu)是指:視圖層View、服務(wù)層Service、持久層Dao,分別完成不同的功能。

View層:用于接收用戶(hù)提交請(qǐng)求的代碼在這里編寫(xiě)。

Service層:系統(tǒng)的業(yè)務(wù)邏輯主要在這里編寫(xiě)。

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)了層間的耦合。

三層架構(gòu)

3、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,一類(lèi)稱(chēng)為業(yè)務(wù)處理Bean。所謂數(shù)據(jù)承載Bean是指實(shí)體類(lèi),專(zhuān)門(mén)承載業(yè)務(wù)數(shù)據(jù)的,如Student、User等。而業(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)行處理,并處理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

三、關(guān)系

1、MVC與三層架構(gòu)的關(guān)系

MVC與三層架構(gòu)很相似,但它們并不一樣。如果以三層架構(gòu)為背景,那么MVC的三個(gè)部分分別對(duì)應(yīng)的是什么?

三層架構(gòu)中的View層簡(jiǎn)單的說(shuō)就是跟用戶(hù)發(fā)生直接關(guān)系的層,MVC中的V和C就是這樣的存在,所以MVC中的V和C均屬于三層架構(gòu)的View層。同時(shí),我們知道MVC中的M(Model)包括了數(shù)據(jù)承載Bean和業(yè)務(wù)處理Bean,其中業(yè)務(wù)處理Bean分為Service或Dao對(duì)象,分別對(duì)應(yīng)業(yè)務(wù)邏輯處理和數(shù)據(jù)庫(kù)操作,相應(yīng)的,它們對(duì)應(yīng)的是三層架構(gòu)中的Service層和Dao層。故,它們的關(guān)系如下圖所示:

MVC與三層架構(gòu)的關(guān)系

2、SSM與三層架構(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)行管理。

SSM與三層架構(gòu)的關(guān)系
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 三層架構(gòu)和MVC 三層架構(gòu) (3-tier application) 是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)...
    hnscdg閱讀 1,799評(píng)論 0 8
  • MVC和三層架構(gòu),是不一樣的。 三層架構(gòu)中,DAL(數(shù)據(jù)訪(fǎng)問(wèn)層)、BLL(業(yè)務(wù)邏輯層)、WEB層各司其職,意在職責(zé)...
    H_Man閱讀 1,408評(píng)論 0 5
  • 1.MVC模型 MVC模型是架構(gòu)的基礎(chǔ),盡管在每個(gè)項(xiàng)目中有各自的變種,但了解它是了解其他架構(gòu)模型的基礎(chǔ),如同C語(yǔ)言...
    hackywit閱讀 398評(píng)論 0 0
  • 本文主要想談的內(nèi)容有: 1.為什么要有架構(gòu)?2.三層架構(gòu)是什么?3.MVC框架是什么? 4.MVC框架和三層架構(gòu)的...
    Datawhale閱讀 7,269評(píng)論 1 7
  • 人和人相遇是很深的緣分,能步入婚姻的殿堂更是千年修來(lái)的緣分!感謝我生命中遇見(jiàn)你~~老公!這句老公我叫了十幾年,叫到...
    藍(lán)雨中閱讀 249評(píng)論 0 0