更新時(shí)間:2022-06-20 09:17:30 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2567次
MVC框架和三層架構(gòu)的區(qū)別有哪些?動(dòng)力節(jié)點(diǎn)小編來告訴大家。
表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。
1.表現(xiàn)層(UI):通俗講就是展現(xiàn)給用戶的界面,即用戶在使用一個(gè)系統(tǒng)的時(shí)候他的所見所得。
2.業(yè)務(wù)邏輯層(BLL):針對(duì)具體問題的操作,也可以說是對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理。
3.數(shù)據(jù)訪問層(DAL):該層所做事務(wù)直接操作數(shù)據(jù)庫(kù),針對(duì)數(shù)據(jù)的增添、刪除、修改、更新、查找等。

MVC有三種角色:
Model:用來儲(chǔ)存數(shù)據(jù)的組件,指要處理的業(yè)務(wù)代碼和數(shù)據(jù)操作代碼。
View:從Model中獲取數(shù)據(jù)進(jìn)行內(nèi)容展示的組件。同樣的Model在不同的View下可展示不同的效果。是一種視圖。
Controller:接受并處理用戶指令(操作Model(業(yè)務(wù))),選擇一個(gè)View進(jìn)行操作。是Model和View的橋梁。
MVC和三層架構(gòu)的區(qū)別:
很長(zhǎng)一段時(shí)間,我對(duì)MVC的理解僅限于,認(rèn)為它和三層架構(gòu)一樣,只不過三層架構(gòu)更多關(guān)注于將業(yè)務(wù)和數(shù)據(jù)分開,而MVC更關(guān)注于將容易變動(dòng)的界面和業(yè)務(wù)邏輯分開,同樣是解耦的作用。這也是上一篇博客的體會(huì)。但是隨著我們的經(jīng)驗(yàn)和學(xué)習(xí)的深入,光知道MVC是分的哪三層就確實(shí)不應(yīng)該了。那么我了來對(duì)比一下MVC和三層。
其實(shí),我們知道分三層的目的是為了“高內(nèi)聚,低耦合”的思想。
1.結(jié)構(gòu)不同。
三層架構(gòu)是典型的上下級(jí)關(guān)系,上層依賴于下層。而MVC作為一種表現(xiàn)模式,是一種協(xié)作的關(guān)系,是平級(jí)的。它們用在不同的領(lǐng)域,可以說MVC可以作為一個(gè)三層架構(gòu)中的UI層來展現(xiàn)界面。截取以前的博客中的兩張圖作為對(duì)比。
2.二者的Model不同
在三層中也有Model,但是那是三層中的實(shí)體層,是三個(gè)層次之間的聯(lián)系紐帶。而MVC中的Model是指數(shù)據(jù)或程序邏輯,是一種頁(yè)面級(jí)的數(shù)據(jù),它接收的數(shù)據(jù)是從業(yè)務(wù)邏輯層處理好的數(shù)據(jù)。
3.二者的分離不同
三層是B層的邏輯層分離了界面顯示U層和直接與數(shù)據(jù)庫(kù)打交道的D層。這是解除了顯示和業(yè)務(wù)邏輯的耦合。
MVC中,Model是不知道View和Controller的存在的,這就隔離了表現(xiàn)和數(shù)據(jù)層,View和Controller是單向引用,View引用Controller的數(shù)據(jù)。這樣分離了界面和數(shù)據(jù)。
4.應(yīng)用場(chǎng)景不同
三層是基于業(yè)務(wù)邏輯來分的,我們會(huì)在軟件工程中的架構(gòu)設(shè)計(jì)中想到采用三層架構(gòu),這樣實(shí)現(xiàn)解耦的目的,通過業(yè)務(wù)邏輯來劃分層次。而mvc是基于頁(yè)面來分的,當(dāng)我們想要達(dá)到界面視圖和數(shù)據(jù)的分離才用到MVC。
如果還在認(rèn)為MVC就是三層架構(gòu)那就是錯(cuò)誤的,如果非要把它們用在一起的話,MVC可以單出來作為一層。其實(shí)項(xiàng)目中就是把MVC只作為一個(gè)表現(xiàn)層,是在客戶端體現(xiàn)的。而MVC中的Controller是負(fù)責(zé)與B層邏輯層甚至是服務(wù)接口聯(lián)系。
以上就是關(guān)于“一文讀懂MVC和三層架構(gòu)的區(qū)別”介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容細(xì)致全面,通俗易懂,很適合沒有基礎(chǔ)的小白學(xué)習(xí),希望對(duì)大家能夠有所幫助。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)