MVC(Model View Controller)模型、視圖和控制器,它是1種較為廣泛利用的結(jié)構(gòu)設(shè)計(jì)模式。
模型:就是在MVC設(shè)計(jì)模式中需要被顯示的數(shù)據(jù)。在通常情況下,該模型需要從數(shù)據(jù)庫中讀取數(shù)據(jù)、保存模型的狀態(tài)等,提供數(shù)據(jù)的訪問方法和數(shù)據(jù)的保護(hù)。
視圖:就是用來顯示模型中數(shù)據(jù)的用戶界面,1般來書,視圖就是HTML頁面。
控制器:就是用來處理對用戶的輸入或交互命令,以便改變模型的狀態(tài),選擇適當(dāng)?shù)囊晥D來顯示對應(yīng)的模型數(shù)據(jù)。
(1)用戶向控制器發(fā)出要求。
(2)控制器收到用戶要求后,向模型要求取得相干的數(shù)據(jù)。
(3)模型將對應(yīng)的數(shù)據(jù)返回給控制器。
(4)控制器將有關(guān)數(shù)據(jù)發(fā)送到指定的視圖。
(5)視圖將數(shù)據(jù)顯現(xiàn)給用戶。
通過上面的介紹相信大家對MVC也有了1定的了解和認(rèn)識,那末MVC與本來我們學(xué)習(xí)過的3層架構(gòu)到底有哪些相同點(diǎn),又有哪些不同的地方呢?
MVC與3層架構(gòu)的觸發(fā)點(diǎn)事相同的――分層,解耦。它們都做到了顯示與數(shù)據(jù)的分離,大大下降了系統(tǒng)的耦合性。
但是從專業(yè)角度來講MVC與3層沒有任何關(guān)系,3層是3層,MVC是MVC。唯1能把他們聯(lián)系在1起的就是“3”這個(gè)字了,不過從初學(xué)者的角度把2者放在1起辨別起來學(xué)習(xí)也更容易理解。
可以說它們之間除相同的剩下的全是不同點(diǎn)。它們有著各自的工作機(jī)制詳情請見下圖:
3層中的UI在MVC中被分解為View和Controller,BLL和DAL被合并為Model。另外在3層中雖然叫做3層架構(gòu),但是我們可以根據(jù)需要分為多層。3層中也觸及到Model,但是3層里面的Model跟MVC中的Model完全是兩回事,3層中的Model是表實(shí)體,而MVC中的Model中包括業(yè)務(wù)邏輯和數(shù)據(jù)訪問。
(1)易于單元測試
(2)容易實(shí)行測試驅(qū)動開發(fā)
(3)易于擴(kuò)大和替換
(4)支持Web Form中的有關(guān)特性
(5)URL被映照到控制器
雖然MVC對Web Form有1些新的特性,但是MVC其實(shí)不能替換傳統(tǒng)的Web Form技術(shù),這兩種技術(shù)只是利用在不同場景,具有不同的優(yōu)、缺點(diǎn)。不能片面的說那種技術(shù)高那種技術(shù)低,開發(fā)者需要根據(jù)自己的實(shí)際情況選擇相應(yīng)的技術(shù)開發(fā)項(xiàng)目。以上是個(gè)人通過查閱相干資料對MVC于3層架構(gòu)之間的1些認(rèn)識,有不足的地方,請大家批評指正。
上一篇 XML