王素芳 胡必波
(1.廣東白云學(xué)院,廣東 廣州 510430;2.廣州工商學(xué)院,廣東 廣州 510850)
基于多層架構(gòu)的ASP.NET 4 MVC框架研究
王素芳1胡必波2
(1.廣東白云學(xué)院,廣東 廣州 510430;2.廣州工商學(xué)院,廣東 廣州 510850)
ASP.NET MVC框架是微軟今后開(kāi)發(fā)Web應(yīng)用程序的一個(gè)主流技術(shù)。本文介紹了如何將一個(gè)基于多層架構(gòu)、ASP.NET 4技術(shù)的Web Forms應(yīng)用遷移為多層架構(gòu)的ASP.NET 4 MVC框架應(yīng)用。從多層架構(gòu)的角度出發(fā),深入剖析了MVC模式工作原理,并給出了一個(gè)多層架構(gòu)的ASP.NET 4 MVC客戶關(guān)系管理系統(tǒng)實(shí)例。
多層架構(gòu);MVC模式;ASP.NET MVC;ASP.NET Web Forms
在開(kāi)發(fā)軟件時(shí),需求的不斷變化對(duì)軟件質(zhì)量和可維護(hù)性有很強(qiáng)的破壞性。MVC模式就是一種能有效降低變化所帶來(lái)的沖擊的可行解決方案。它通過(guò)業(yè)務(wù)邏輯層與數(shù)據(jù)表現(xiàn)層的分割,把這兩部分?jǐn)?shù)據(jù)分離開(kāi)來(lái),以編寫(xiě)出更具模塊化、可維護(hù)性更高的程序。自引入以來(lái),MVC已經(jīng)在數(shù)十種框架中應(yīng)用,例如,Java開(kāi)發(fā)Web Application框架有Jsp+Servlet+JavaBean(EJB)等,.NET開(kāi)發(fā)Web Application框架有ASP. NET MVC Framework(ASP.NET MVC)等,PHP開(kāi)發(fā)Web Application框架有ThinkPHP/FleaPHP等。其中ASP.NET MVC是微軟公司在原有的ASP.NET框架基礎(chǔ)上提出的一個(gè)新的MVC框架。利用ASP.NET MVC,.NET開(kāi)發(fā)人員可以用MVC模式來(lái)構(gòu)建Web應(yīng)用,做到清晰的概念分離(UI或視圖與業(yè)務(wù)應(yīng)用邏輯分離,應(yīng)用邏輯和后端數(shù)據(jù)分離),同時(shí)還可以使用測(cè)試驅(qū)動(dòng)開(kāi)發(fā),這些是ASP.NET Web Forms完全無(wú)法比擬的。ASP.NET MVC已經(jīng)成為.NET開(kāi)發(fā)人員必須掌握的關(guān)鍵技術(shù)之一。
多層系統(tǒng)架構(gòu)又被稱為N層系統(tǒng)架構(gòu),是指將軟件系統(tǒng)的各個(gè)功能分開(kāi),放在不同的獨(dú)立程序集中,形成獨(dú)立的“層”,各層之間通過(guò)規(guī)定的規(guī)則進(jìn)行調(diào)用,以完成整個(gè)軟件系統(tǒng)。
圖1 多層系統(tǒng)架構(gòu)圖
如圖1所示為一般設(shè)計(jì)的通用多層系統(tǒng)架構(gòu),其中Client層為用戶的瀏覽器,也即客戶層;UI層為系統(tǒng)開(kāi)發(fā)的用戶界面層,用于向用戶展示系統(tǒng)運(yùn)行的結(jié)果,并接收用戶的數(shù)據(jù)輸入及操作;BLL層為系統(tǒng)開(kāi)發(fā)的業(yè)務(wù)邏輯處理層,用于完成功能實(shí)現(xiàn)過(guò)程中各種業(yè)務(wù)過(guò)程的處理,對(duì)于有一定要求的用戶操作或功能實(shí)現(xiàn),在UI層代碼調(diào)用BLL層中對(duì)應(yīng)的方法完成;DAL層為專門(mén)用于實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)的層,根據(jù)其它層的需要完成數(shù)據(jù)庫(kù)中數(shù)據(jù)的讀取或更新數(shù)據(jù)到數(shù)據(jù)庫(kù);對(duì)于UI中需要完成的簡(jiǎn)單數(shù)據(jù)操作功能,沒(méi)有業(yè)務(wù)邏輯操作時(shí),可以由UI層中代碼直接調(diào)用DAL層中的類(lèi)的相應(yīng)方法完成數(shù)據(jù)訪問(wèn),對(duì)于有一定業(yè)務(wù)邏輯的功能,則由BLL層中的代碼調(diào)用此層中的功能,而不直接由UI層訪問(wèn)DAL層代碼;Entity層則是定義的通用實(shí)體類(lèi)層,其中定義的類(lèi)用于UI層、BLL層、DAL層進(jìn)行交互時(shí)提供統(tǒng)一的實(shí)體類(lèi)定義,實(shí)體類(lèi)一般根據(jù)數(shù)據(jù)庫(kù)結(jié)構(gòu)或業(yè)務(wù)邏輯的需要而定義。
MVC(Model-View-Controller)不是一種編程語(yǔ)言,嚴(yán)格來(lái)說(shuō)也不算是一種技術(shù),而是一種開(kāi)發(fā)架構(gòu),一種開(kāi)發(fā)觀念,或者說(shuō)是一種程序設(shè)計(jì)模式。MVC設(shè)計(jì)模式典型地反映了數(shù)據(jù)與表示的分離,它是一種交互界面的結(jié)構(gòu)組織模式,廣泛用于圖形界面的設(shè)計(jì)中。MVC強(qiáng)調(diào)把用戶輸入、數(shù)據(jù)模型和圖像顯示以模塊化的方式分開(kāi)設(shè)計(jì),將一個(gè)交互式應(yīng)用程序分成以下3個(gè)部件:
(1)模型(Model):也稱作數(shù)據(jù)模型,是軟件所處理的核心邏輯,包括核心功能和數(shù)據(jù)。
(2)視圖(View):向用戶顯示信息,對(duì)相同的信息可以有不同的顯示。
(3)控制器(Controller):處理用戶的輸入(如:鼠標(biāo)、鍵盤(pán)等),轉(zhuǎn)化為用戶對(duì)模型或視圖的服務(wù)請(qǐng)求,并把信息的變化傳遞給視圖。用戶僅通過(guò)控制器與系統(tǒng)交互。
圖2 Web應(yīng)用程序的MVC概念圖
如圖2所示,說(shuō)明在ASP.NET 4 MVC中,模型、視圖、控制器之間的關(guān)系??刂破髟谄渲邪缪葜浅V匾慕巧?,控制器不僅處理用戶的請(qǐng)求,還實(shí)現(xiàn)與模型之間的交互,對(duì)指定的視圖發(fā)送相關(guān)的命令,在實(shí)際的ASP.NET 4 MVC應(yīng)用開(kāi)發(fā)中,開(kāi)發(fā)者的主要工作就是實(shí)現(xiàn)控制器的編碼。
(1)搭建多層架構(gòu)的MVC框架
客戶關(guān)系管理系統(tǒng)包括:營(yíng)銷(xiāo)管理、客戶管理、服務(wù)管理、統(tǒng)計(jì)報(bào)表和基礎(chǔ)數(shù)據(jù)5個(gè)功能模塊。另包括用于支持系統(tǒng)的權(quán)限管理模塊。該系統(tǒng)采用了多層架構(gòu),解決方案為CRM;UI層使用Web應(yīng)用程序項(xiàng)目類(lèi)型,項(xiàng)目名稱為Crm;包括BLL(業(yè)務(wù)邏輯處理層)、DAL(數(shù)據(jù)訪問(wèn)的層)、Entity(通用實(shí)體類(lèi)層)等類(lèi)庫(kù)項(xiàng)目。各層之間的關(guān)系,通過(guò)添加相關(guān)的引用來(lái)完成。整個(gè)網(wǎng)頁(yè)主要分為六大部分:根目錄下的瀏覽頁(yè)面、“SaleManage”目錄下的營(yíng)銷(xiāo)管理頁(yè)面、“Customer-Management”目錄下的客戶管理頁(yè)面、“CustomerServices”目錄下的客戶服務(wù)頁(yè)面;“EmplyeeManage”目錄下的員工管理頁(yè)面;“Statistics”目錄下的統(tǒng)計(jì)報(bào)表頁(yè)面。如圖3所示,可以看出遷移后的MvcCrm.NET項(xiàng)目結(jié)構(gòu)所包括BLL、DAL、Entity等類(lèi)庫(kù)項(xiàng)目代碼與Crm.NET項(xiàng)目結(jié)構(gòu)完全相同。
圖3 MvcCrm.NET的項(xiàng)目結(jié)構(gòu)
MVC模式通過(guò)對(duì)多層架構(gòu)的BLL層與UI層的分割,把這兩部分?jǐn)?shù)據(jù)分離開(kāi)來(lái),以編寫(xiě)出更具模塊化、可維護(hù)性更高的程序。MVC模式是把多層架構(gòu)中的UI層進(jìn)行了分化,分成了M、V、C三個(gè)部分,其中C完成頁(yè)面邏輯,可直接與BLL層進(jìn)行對(duì)話,通過(guò)V來(lái)與UI層完成通話??梢哉f(shuō),MVC模式是屬于多層架構(gòu)中的表現(xiàn)層,多層和MVC模式可以共存,多層架構(gòu)是基于業(yè)務(wù)邏輯來(lái)分的,而MVC模式是基于頁(yè)面來(lái)分的。多層架構(gòu)和MVC模式之間的關(guān)系,如圖4所示。
圖4 多層架構(gòu)和MVC模式之間的關(guān)系
(2)模型開(kāi)發(fā)
在MvcCrm.NET系統(tǒng)中,模型的開(kāi)發(fā)通過(guò)多層架構(gòu)來(lái)實(shí)現(xiàn)。Entity層定義了6個(gè)實(shí)體類(lèi),這些類(lèi)分別是Customer-Leve類(lèi)、CustomerLostStatus類(lèi)、CustomerStatus類(lèi)、ORDERSTATUS類(lèi)、SaleChanceStatus類(lèi)、ServiceType類(lèi)。實(shí)體類(lèi)對(duì)象并不是與數(shù)據(jù)表一一對(duì)應(yīng)的。比如在數(shù)據(jù)庫(kù)DsCrmSecond中有Order表,但是并不需要構(gòu)建相關(guān)的業(yè)務(wù)邏輯;反過(guò)來(lái)說(shuō),Entity層有CustomerLeve類(lèi),在數(shù)據(jù)庫(kù)中并不存在相關(guān)的數(shù)據(jù)表。一句話,要根據(jù)應(yīng)用程序的需要構(gòu)建合適的業(yè)務(wù)對(duì)象。DAL層定義了4個(gè)類(lèi),分別是UsersInfoRepository類(lèi)、SaleChanceRepository類(lèi)、ApplicationRepository類(lèi)、Repository類(lèi)。BLL層定義了SalePlanService類(lèi)、OrderService類(lèi)、CustomerService類(lèi)、CustomerServicesService類(lèi)、Application-InfoService等11個(gè)類(lèi)。在MvcCrm.NET系統(tǒng)中的控制器中,就是使用這些業(yè)務(wù)邏輯類(lèi)來(lái)查詢、添加、修改、刪除相關(guān)的實(shí)體類(lèi)對(duì)象的。工具類(lèi)“Utils”項(xiàng)目,則定義了讀、寫(xiě)配置文件Web.config的一些ConfigurationTool類(lèi)。
(3)控制器開(kāi)發(fā)
位于目錄“Controllers”,主要是CustomerController控制器、SaleController控制器的實(shí)現(xiàn)。CustomerController控制器用于處理系統(tǒng)中客戶頁(yè)面的請(qǐng)求,SaleController控制器則主要處理營(yíng)銷(xiāo)頁(yè)面的請(qǐng)求。由于MvcCrm.NET系統(tǒng)使用了母版頁(yè)技術(shù),因此在控制器的開(kāi)發(fā)中,需要開(kāi)發(fā)一個(gè)控制器基類(lèi)——ApplicationController。
(4)視圖開(kāi)發(fā)
在實(shí)現(xiàn)了MvcCrm.NET系統(tǒng)中的模型、控制器之后,就可以比較容易地實(shí)現(xiàn)該網(wǎng)站中各種頁(yè)面的視圖開(kāi)發(fā)。根據(jù)ASP.NET 4 MVC框架的默認(rèn)約定,需要主要開(kāi)發(fā)兩大類(lèi)的視圖頁(yè)面,分別位于目錄“Views”中的“CustomerManag”文件夾和“SaleManage”文件夾中。
多層架構(gòu)和MVC模式是有明顯區(qū)別的,MVC模式可以是屬于多層架構(gòu)中的表現(xiàn)層。多層架構(gòu)的實(shí)現(xiàn),可以非常方便地來(lái)構(gòu)建ASP.NET 4 MVC項(xiàng)目中的模型。值得一提的是ASP.NET MVC框架與Web Forms技術(shù)是建立在ASP.NET基礎(chǔ)上的兩種平行技術(shù),是微軟今后同時(shí)發(fā)展的兩種Web開(kāi)發(fā)技術(shù)。它只是給開(kāi)發(fā)者提供了開(kāi)發(fā)Web應(yīng)用程序的一種選擇,而絕不是替代傳統(tǒng)的Web Forms技術(shù),這兩種技術(shù)在不同的應(yīng)用場(chǎng)景中,具有不同的優(yōu)、缺點(diǎn),開(kāi)發(fā)者需要根據(jù)實(shí)際情況,選擇對(duì)應(yīng)的技術(shù),甚至在同一個(gè)項(xiàng)目中混合使用這兩種技術(shù)。
[1]董寧.ASP.NET MVC程序開(kāi)發(fā)[M].北京:人民郵電出版社,2014.
[2]張家浩.現(xiàn)代軟件工程[M].北京:機(jī)械工業(yè)出版社,2009.
[3]林慶,朱翠苗,鄭廣成,等.基于ASP.NET的MVC設(shè)計(jì)模式的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,(1):167-169.
[4]黃勝根,陳蜀宇.基于ASP.NET MVC框架的干教系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,(2):191-193.
Research on ASP.NET 4 MVC Framework Based on Multi-tiers Architecture
Wang Sufang1Hu Bibo2
(1.Guangdong Baiyun University,Guangzhou 510430,Guangdong; 2.Guangzhou industrial and Commercial College,Guangzhou 510850,Guangdong)
ASP.NET MVC framework is a mainstream technology for developing Web applications in the future.This paper describes how to transfer a Web Forms application based on multi-tiers architecture and ASP.NET 4 technology to a ASP.NET 4 MVC framework for multi-tiers architecture.From the perspective of multi-tiers architecture,the working principle of MVC mode is analyzed,and a MVC 4ASP.NET customer relationship management system is given.
multi-tiers architecture;MVC model;ASP.NET MVC;ASP.NET Web Forms
TP311.52
A
1008-6609(2015)10-0064-03
王素芳,女,江西人,碩士,講師,研究方向:數(shù)據(jù)庫(kù),人工智能,多媒體技術(shù)等。