方又強(qiáng)
(武昌理工學(xué)院,湖北武漢,430223)
MVC架構(gòu)體系降低耦合性措施探討
方又強(qiáng)
(武昌理工學(xué)院,湖北武漢,430223)
當(dāng)前MVC架構(gòu)體系在軟件開(kāi)發(fā)中的應(yīng)用十分普遍,通過(guò)應(yīng)用該框架體系可以降低系統(tǒng)的耦合性,本文對(duì)此進(jìn)行分析,分析可MVC架構(gòu)組成及降低耦合性的措施。
MVC;耦合性;降低
最早提出MVC架構(gòu)是Trygve Reenskaug,在1979年提出,提出之后當(dāng)時(shí)被廣泛應(yīng)用在熱門語(yǔ)言Smalltalk中,由于該架構(gòu)的設(shè)計(jì)界面具有交互性和多窗口等特點(diǎn),因此當(dāng)時(shí)被Windows、Macintosh系統(tǒng)所采納。隨著軟件設(shè)計(jì)模式的出現(xiàn)和面向?qū)ο蠹夹g(shù)的不斷成熟,MVC架構(gòu)也越來(lái)越完善,成為一種典型代表的面向?qū)ο笤O(shè)計(jì)模式。MVC架構(gòu)圖見(jiàn)圖1,使用MVC架構(gòu)對(duì)軟件進(jìn)行開(kāi)發(fā),將開(kāi)發(fā)過(guò)程切割成模型(Model)、視圖(View)、控制器(Controller)3個(gè)主要單元。這三個(gè)單元相互協(xié)作完成用戶提交的每項(xiàng)任務(wù)。使用MVC架構(gòu)可以實(shí)現(xiàn)程序的動(dòng)態(tài)設(shè)計(jì),并能對(duì)程序進(jìn)行后續(xù)修改和擴(kuò)展簡(jiǎn)化,使某一部分功能實(shí)現(xiàn)可重復(fù)利用。此外,該架構(gòu)還簡(jiǎn)化了軟件設(shè)計(jì)的復(fù)雜程序,使程序結(jié)構(gòu)更加直觀。MVC架構(gòu)三者的協(xié)作關(guān)系如下:用戶發(fā)送請(qǐng)求給控制器,由控制器決定調(diào)用哪個(gè)模型來(lái)處理;然后模型根據(jù)用戶的請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,并返回與之相對(duì)應(yīng)的數(shù)據(jù);最后控制器將返回的數(shù)據(jù)填充到相應(yīng)的視圖,并通過(guò)視圖呈現(xiàn)給用戶。
圖1 MVC 架構(gòu)
Model是一組類,它是應(yīng)用程序的關(guān)鍵核心部分,代表了業(yè)務(wù)規(guī)則,用來(lái)說(shuō)明數(shù)據(jù)的處理、修改等操作規(guī)則,它為Controller對(duì)象和View對(duì)象提供了被Model對(duì)象封裝的應(yīng)用業(yè)務(wù)邏輯;View是應(yīng)用程序的用戶界面,和用戶的應(yīng)用有關(guān),通過(guò)該界面可以實(shí)現(xiàn)用戶的輸入和輸出。通過(guò)View對(duì)象可以訪問(wèn)Model對(duì)象中的數(shù)據(jù),并顯示Model對(duì)象的狀態(tài)。通過(guò)“形式與內(nèi)容”可以描述View對(duì)象與Model對(duì)象的關(guān)系:①如果改變Model對(duì)象中的狀態(tài),則View對(duì)象的用戶界面顯示內(nèi)容也會(huì)發(fā)生相應(yīng)的改變,達(dá)到內(nèi)容與形式的一致;②不同的用戶對(duì)同一個(gè)Model對(duì)象發(fā)出不同的請(qǐng)求,可以產(chǎn)生多個(gè)View對(duì)象。
Controller對(duì)象的作用是處理用戶、特定應(yīng)用程序邏輯及整個(gè)應(yīng)用程序流通信。通過(guò)Controller可以實(shí)現(xiàn)Model對(duì)象與View對(duì)象之間的同步,也就是完成如下動(dòng)作:①以用戶對(duì)View對(duì)象的操作為基礎(chǔ)對(duì)Model對(duì)象進(jìn)行更新;②如果Model對(duì)象狀態(tài)發(fā)生改變及時(shí)將這種改變反饋到View對(duì)象上。如.NET平臺(tái)用DataSet對(duì)象可以輕易實(shí)現(xiàn)用戶操作的信息反饋,因?yàn)橐粋€(gè)DataSet對(duì)象可以包含多個(gè)DataTable對(duì)象,每個(gè)DataTable對(duì)象都可以和數(shù)據(jù)庫(kù)中的數(shù)據(jù)建立聯(lián)系,生成用戶請(qǐng)求數(shù)據(jù)。通過(guò)Controller層可以實(shí)現(xiàn)Model層與View層之間溝通,對(duì)用戶的請(qǐng)求進(jìn)行分派,并選擇合適的視圖顯示請(qǐng)求結(jié)果,同時(shí)也可以對(duì)用戶的輸入進(jìn)行解釋并將它們映射為模型層可執(zhí)行的操作。
有上述分析可知,在MVC的架構(gòu)中,應(yīng)用程序的界面和業(yè)務(wù)邏輯等應(yīng)用程序的其他部分是完全分離的,因此,能夠?qū)γ坎糠知?dú)立進(jìn)行設(shè)計(jì),降低了業(yè)務(wù)邏輯、用戶的控制動(dòng)作和業(yè)務(wù)的實(shí)際狀況的展現(xiàn)之間的藕合限制。既可以為同一個(gè)模型和控制器選擇不同的界面,也可以對(duì)同一個(gè)應(yīng)用程序選擇不同的數(shù)據(jù)源和模型,還可以通過(guò)修改控制器對(duì)應(yīng)用程序響應(yīng)使用者動(dòng)作的進(jìn)行改變。
2.1應(yīng)用StrutS框架進(jìn)行設(shè)計(jì)
Struts框架是基于MVC模式,是APache組織的一個(gè)開(kāi)放源碼項(xiàng)目,具備重用性、靈活性和模塊化的優(yōu)點(diǎn),應(yīng)用Struts框架可以簡(jiǎn)化基于MVC的Web開(kāi)發(fā)程序,并且縮短開(kāi)發(fā)時(shí)間。Struts的主要實(shí)現(xiàn)技術(shù)是:Servlet、JSP和Custom Tag Library。StrutS框架包括Actionservlet、Action處理器、Controller,其處理流程如下:Actionservlet接收并處理客戶請(qǐng)求,接收請(qǐng)求之后將其映射到Action處理器對(duì)象進(jìn)行處理。Action處理對(duì)象訪問(wèn)ActionForm中的數(shù)據(jù),根據(jù)用戶請(qǐng)求調(diào)用后臺(tái)封裝了業(yè)務(wù)邏輯的Bean組件,返回處理結(jié)果到Action處理器,Action處理器對(duì)象根據(jù)處理結(jié)果通知Controller,Controller進(jìn)行下一步的處理。由于Struts框架的Actionservlet、Action處理器、Controller三部分相分離,因此,采用Struts框架對(duì)MVC框架進(jìn)行設(shè)計(jì),可以降低總架構(gòu)的耦合性。
2.2將MVC框架體系與三層結(jié)構(gòu)技術(shù)結(jié)合應(yīng)用
在對(duì)軟件進(jìn)行設(shè)計(jì)時(shí),其三層結(jié)構(gòu)包括表現(xiàn)層、業(yè)務(wù)邏輯層及數(shù)據(jù)訪問(wèn)層。(1)UI(表現(xiàn)層):該層實(shí)際上是用戶界面,用戶在使用某個(gè)軟件系統(tǒng)時(shí)看到的操作界面。(2)BLL(業(yè)務(wù)邏輯層):通過(guò)業(yè)務(wù)邏輯層實(shí)現(xiàn)對(duì)數(shù)據(jù)層的操作,處理數(shù)據(jù)業(yè)務(wù)邏輯及相關(guān)事務(wù)。(3)DAL(數(shù)據(jù)訪問(wèn)層):通過(guò)該層可以直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的增添、修改、刪除、更新、查找等功能。由于軟件設(shè)計(jì)包含三層結(jié)構(gòu),因此采用傳統(tǒng)方法對(duì)軟件進(jìn)行設(shè)計(jì),需要編寫大量的代碼,并且這些代碼的可重用性差,代碼模塊之間的耦合性較高,而采用MVC與三層結(jié)構(gòu)技術(shù)相結(jié)合對(duì)軟件進(jìn)行開(kāi)發(fā)設(shè)計(jì),可以減少代碼開(kāi)發(fā)工作量,將表示層和業(yè)務(wù)邏輯層及數(shù)據(jù)層分離,降低了代碼的耦合性,提高了系統(tǒng)的可維護(hù)性及可復(fù)用性。
MVC框架體系在軟件設(shè)計(jì)和開(kāi)發(fā)中有著廣泛的應(yīng)用市場(chǎng),并且具有十分的重要作用和地位。本文簡(jiǎn)要介紹了MVC框架體系結(jié)構(gòu),并對(duì)其框架體系耦合性的降低進(jìn)行分析,具有重要的研究意義。
[1] Ning W,Liming L,Yanzhang W.Research on the Web Information System Development Platform Based on MVC Design Pattern.IEEE,2008 3:203-206.
[2] Yan Cao,Lina Yang,Yanli Yang.Machine Tool Distributed Cooperative Design System Based on Extended MVC-Based Web Application Framework and XML Interoperable Information Model.IEEE,2008:423-428.
Discussion on Reducing Coupling Measures in MVC Architecture
Fang Youqiang
(Wuchang University of Technology,WuHan Hubei,430223)
The application of MVC architecture in software development is very popular. The application of this framework can reduce the coupling of the system. In this paper, the MVC architecture is analyzed and the measures to reduce the coupling are analyzed.
MVC; coupling;reduce