MVC與三層架構(gòu)

一悉抵、簡(jiǎn)述

在軟件開(kāi)發(fā)中肩狂,MVC與三層架構(gòu)這兩個(gè)專業(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層:用于接收用戶提交請(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)類陋守。服務(wù)標(biāo)準(zhǔn)(接口)是相同的震贵,服務(wù)提供者(實(shí)現(xiàn)類)可以更換。這就實(shí)現(xiàn)了層間的耦合水评。

三層架構(gòu)

3猩系、MVC

MVC是指:Model模型、View視圖中燥、Controller控件器寇甸。

View:視圖,為用戶提供使用界面疗涉,與用戶直接進(jìn)行交互拿霉。

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)求的驮肉。

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

MVC架構(gòu)程序的工作流程是這樣的:

(1)用戶通過(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ì)用戶請(qǐng)求進(jìn)行處理浪读。

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

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

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ō)就是跟用戶發(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)者桂塞,完成用戶的請(qǐng)求接收功能凹蜂。SpringMVC的Controller作為整個(gè)應(yīng)用的控制器,完成用戶請(qǐng)求的轉(zhuǎn)發(fā)及對(duì)用戶的響應(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)建浙宜、初始化官辽、銷毀,及對(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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市裙品,隨后出現(xiàn)的幾起案子俗批,更是在濱河造成了極大的恐慌,老刑警劉巖市怎,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岁忘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡区匠,警方通過(guò)查閱死者的電腦和手機(jī)干像,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驰弄,“玉大人麻汰,你說(shuō)我怎么就攤上這事∑莞荩” “怎么了五鲫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)岔擂。 經(jīng)常有香客問(wèn)我位喂,道長(zhǎng)浪耘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任塑崖,我火速辦了婚禮七冲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弃舒。我一直安慰自己癞埠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布聋呢。 她就那樣靜靜地躺著苗踪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪削锰。 梳的紋絲不亂的頭發(fā)上通铲,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音器贩,去河邊找鬼颅夺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛹稍,可吹牛的內(nèi)容都是我干的吧黄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唆姐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拗慨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奉芦,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赵抢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后声功,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烦却,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年先巴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了其爵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡筹裕,死狀恐怖醋闭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朝卒,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布乐埠,位于F島的核電站抗斤,受9級(jí)特大地震影響囚企,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑞眼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一龙宏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伤疙,春花似錦银酗、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至锯蛀,卻和暖如春灭衷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旁涤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工翔曲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劈愚。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓瞳遍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親菌羽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掠械,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

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