新聞中心
層次架構(gòu)風(fēng)格從之前的兩層C/S到三層C/S,然后演化為三層B/S架構(gòu),三層B/S架構(gòu)之后仍然在往后面演化,我們來(lái)看一下層次架構(gòu)演化過(guò)程中都有了哪些演化的架構(gòu)風(fēng)格呢?

目前創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、徽縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
而我們先簡(jiǎn)單了解一下之前的層次架構(gòu)風(fēng)格中分層的各個(gè)層次的作用。
- 表現(xiàn)層:由于用戶進(jìn)行交互,比如MVC,MVP,MVVM其實(shí)都是與用戶頁(yè)面打交道的一層
- 中間層:比如我們的接口層或者業(yè)務(wù)邏輯層,一般主要用于處理業(yè)務(wù)邏輯,比如我們的service層
- 數(shù)據(jù)訪問(wèn)層:ORM(對(duì)象關(guān)系映射),比如說(shuō)平常的hibernate或mybatis.就是把一個(gè)個(gè)對(duì)象和關(guān)系表的數(shù)據(jù)通過(guò)映射關(guān)系綁定起來(lái),讓我們把數(shù)據(jù)庫(kù)操作映射到這個(gè)對(duì)象的操作上來(lái)。。
- 數(shù)據(jù)架構(gòu)層(其實(shí)就是數(shù)據(jù)庫(kù))
1、MVC架構(gòu)風(fēng)格
MVC分別是什么?
- Model(模型):是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫(kù)中存取數(shù)據(jù)。
- View(視圖):是應(yīng)用程序中 處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
- Controller(控制器):是應(yīng)用程序中處理用戶交互的部分。通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
在J2EE體系中對(duì)應(yīng)關(guān)系為:
- Model(模型):Entity Bean, Session Bean
- View(視圖):JSP
- Controller(控制器):Servlet
在SpringBoot體系中
- Model(模型):也就是我們的Entity
- View(視圖):模板頁(yè)面,如果是JSON數(shù)據(jù)表示省去了View這個(gè)層次,返回JSON數(shù)據(jù)交給前端自己處理數(shù)據(jù)并渲染即可
- Controller(控制器):Controller,其實(shí)本質(zhì)上還是Servlet
主動(dòng)MVC和被動(dòng)MVC
細(xì)節(jié)其實(shí)不需要我們?nèi)チ私?,但是有主?dòng)型和被動(dòng)型需要我們了解。
動(dòng)作解讀(了解MVC直接如何交互)
- 1、客戶做出某種動(dòng)作,比如點(diǎn)擊某個(gè)按鈕,View接收到這個(gè)動(dòng)作
- 2、然后把這個(gè)動(dòng)作傳遞給Controller層級(jí)
- 3、然后把這個(gè)動(dòng)作繼續(xù)傳遞給Model,Model來(lái)處理數(shù)據(jù)的業(yè)務(wù)邏輯。
- 5、處理完畢之后,把數(shù)據(jù)的更改反饋給View層
- 6、View層再將這個(gè)修改再頁(yè)面上渲染,從而反饋給客戶
- 4、視圖可以直接和模型進(jìn)行交互,直接操作模型獲取數(shù)據(jù)的操作,因此這和操作對(duì)于標(biāo)準(zhǔn)層次風(fēng)格來(lái)說(shuō),這就是跨層次的對(duì)接了,所以這個(gè)耦合對(duì)比較高。
MVC中存在的問(wèn)題就是視圖可以直接操作模型,從而導(dǎo)致跨層級(jí)滴哦安永,而MVP的提出,正是解決這個(gè)跨層級(jí)的問(wèn)題的。它是MVC的一直變種。
2、MVP架構(gòu)風(fēng)格
什么是MVP?
- MVP是MVC的變種
- MVP實(shí)現(xiàn)了View和Model之間的解耦(View不直接使用Model,修改View不會(huì)影響Model)
- MVP更好的支持單元測(cè)試, 因?yàn)檫壿嬙赑中,可以脫離View來(lái)測(cè)試邏輯,可以將一個(gè)P用于多個(gè)V,而不需要修改P的邏輯。
- MVP中V要處理界面事件,業(yè)務(wù)邏輯在P中,MVC中界面事件交由C處理。
其實(shí)現(xiàn)在我們前后端分離之后,如果在不使用數(shù)據(jù)雙向綁定的基礎(chǔ)上,就是典型的MVP架構(gòu)風(fēng)格,如果使用了數(shù)據(jù)雙向綁定,那么就是MVVM架構(gòu)風(fēng)格了。
3、MVVM架構(gòu)風(fēng)格
MVVM跟MVP的操作思想其實(shí)沒(méi)有一些本質(zhì)性的區(qū)別了,只是多實(shí)現(xiàn)了一個(gè)雙向數(shù)據(jù)綁定技術(shù)。
4、富互聯(lián)網(wǎng)應(yīng)用(RIA)
- RIA結(jié)合了C/S架構(gòu)反應(yīng)速度快、交互性強(qiáng)的有點(diǎn),以及B/S架構(gòu)傳播范圍廣以及容易傳播的特性。
- RIA簡(jiǎn)化并改進(jìn)B/S架構(gòu)的用戶交互
- 數(shù)據(jù)能夠被緩存在客戶端,從而可以實(shí)現(xiàn)一個(gè)比基于HTML的響應(yīng)速度更快且數(shù)據(jù)往返與服務(wù)器的次數(shù)更少的用戶界面。
其實(shí)簡(jiǎn)單來(lái)說(shuō),就是我們?cè)诖蜷_頁(yè)面時(shí),將一些常用的數(shù)據(jù)加載到本地,然后減少與服務(wù)器的交互次數(shù),從而提升訪問(wèn)速度。
主要應(yīng)用于那種頁(yè)面動(dòng)畫較多的,比游戲類的小程序,一般都會(huì)這樣做,比如先加載資源,然后初始化配置,再加載某某場(chǎng)景數(shù)據(jù)等。就是為了后面直接訪問(wèn)本地更快些。
5、小結(jié)
主要說(shuō)明的層次架構(gòu)中表現(xiàn)層的架構(gòu)演化,后面還有SOA,微服務(wù)等架構(gòu)風(fēng)格,我們慢慢了解,學(xué)無(wú)止境,加油!
名稱欄目:軟件架構(gòu)設(shè)計(jì):B/S層次架構(gòu)之MVC/MVP/MVVM
網(wǎng)頁(yè)鏈接:http://m.5511xx.com/article/dhhcsoj.html


咨詢
建站咨詢
