前言最近小編在做的項目中接觸了MVC三層架構(gòu),之前也有一個(UI-BLL-DAL)三層架構(gòu),都說一山不能容二虎,二者之間有什么區(qū)別和聯(lián)系呢?讓我們來一起來揭開這所謂的‘三層’架構(gòu)的神秘面紗吧。 正文1. 三層架構(gòu)我們所普遍了解的三層架構(gòu)(3-tier application)是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。區(qū)分層次的目的即是為了“高內(nèi)聚、低耦合”的思想。 (內(nèi)聚:一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度;耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。) 表現(xiàn)層(User Interface):展現(xiàn)給用戶的界面,也就是用戶在使用一個系統(tǒng)時的所見所得。 業(yè)務(wù)邏輯層(Bussiness Logic Layer):負(fù)責(zé)關(guān)鍵業(yè)務(wù)的處理和數(shù)據(jù)傳遞 數(shù)據(jù)訪問層(Data Access Layer):實現(xiàn)數(shù)據(jù)訪問,提供對數(shù)據(jù)庫的增添、刪除、修改、更新、查找等操作。
使用三層結(jié)構(gòu)主要是使項目結(jié)構(gòu)更清楚、分工更明確,有利于后期的維護和升級,當(dāng)數(shù)據(jù)庫或用戶界面發(fā)生改變時,不需要重新開發(fā),只需要做簡單的調(diào)整即可。 2. MVCMVC(Model-View-Controller,模型-視圖-控制器模式),將應(yīng)用程序分為三個主要組件:視圖(View)、控制器(Controller)、模型(Model),它有兩種理解,一種是表現(xiàn)模式、一種是架構(gòu)模式。 Model層:代表了應(yīng)用程序的數(shù)據(jù),就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)模型的設(shè)計可以說是MVC最主要的核心。 View層:代表用戶交互界面,對于Web應(yīng)用來說,可以概括為HTML界面,jsp頁面。 Controller層:處理用戶與軟件的交互操作的,控制提供模型中的任何變化的傳播,確保用戶界面與模型間的對應(yīng)聯(lián)系,將模型和試圖匹配在一起,共同完成用戶的請求。 MVC最重要的一個特點是多個試圖能共享一個模型,當(dāng)需求多變,用越來越多的方式來訪問應(yīng)用程序的時候,用mvc就可以解決,并且將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,易于單元測試,可以最大化地重用代碼。 3.三層架構(gòu)和MVC的區(qū)別與聯(lián)系概念不同:MVC是一種模式(觀察者、策略、組合模式)),根據(jù)項目的具體需求來決定是否適用于該項目;三層架構(gòu)是一種架構(gòu),可適用于任何一個項目。 三層架構(gòu)中沒有定義Conroller,MVC也沒有把業(yè)務(wù)的邏輯訪問看成兩個層。 三層架構(gòu)中的Model的概念和MVC中的Model概念不一樣,三層架構(gòu)中的Model是以實體類構(gòu)成的,MVC中的Model是由業(yè)務(wù)邏輯與訪問數(shù)據(jù)組成的。 目的不同:MVC是基于頁面來分的,為了實現(xiàn)Web系統(tǒng)的職能分工,主要用于表現(xiàn)層;三層是基于業(yè)務(wù)邏輯來分的,為了解耦,主要用于體系結(jié)構(gòu)。 層次不同:MVC是橫向分層,各部分之間是相互協(xié)作關(guān)系,不存在上下關(guān)系;三層架構(gòu)是縱向分層,典型的上下關(guān)系,上層依賴下層。 MVC中的Model、View、Controller,這三個加起來才是三層架構(gòu)中的UI層,而Controller直接與三層中的BLL進行對話。 相同點:它們都有一個表示層。 MVC表現(xiàn)層模式:(ASP.NET MVC是微軟官方提供的MVC模式編寫的ASP.NET WEB應(yīng)用程序的一個框架)
總結(jié)MVC是一種模式,三層是一種架構(gòu),MVC和三層、模式和架構(gòu)的區(qū)別你Get到了嗎?
|
|