宮 禹,蘇 丹
(黑龍江省科學(xué)院)
近年來隨著軟件開發(fā)技術(shù)的不斷進(jìn)步,人們和企業(yè)對軟件的使用要求不僅局限于軟件的實現(xiàn)功能,軟件開發(fā)人員在軟件開發(fā)的過程中也不僅僅將實現(xiàn)軟件功能作為軟件開發(fā)的最終目標(biāo).人們、企業(yè)和軟件開發(fā)人員在注重軟件的基本功能外,還注重軟件的基本性能,包括軟件的安全性、靈活性、軟件的升級與維護(hù)等.因此,J2EE技術(shù)應(yīng)運(yùn)而生,隨著J2EE技術(shù)的日趨成熟,J2EE技術(shù)中MVC設(shè)計模式逐漸成為軟件開發(fā)人員使用最多的軟件設(shè)計模型,特別是在Web軟件系統(tǒng)的開發(fā)中,MVC設(shè)計模式不僅提高了Web模式的維護(hù)性、擴(kuò)展性還降低了軟件開發(fā)的成本.
對于Web應(yīng)用程序來說,MVC設(shè)計模式就是將應(yīng)用程序抽象為輸入、處理、輸出三個部分.在這三個部分中,模型層可以看做是應(yīng)用程序的業(yè)務(wù)流程層,這一層主要處理的是應(yīng)用程序的業(yè)務(wù)流程和業(yè)務(wù)數(shù)據(jù),它對用戶是不可見的,用戶只在視圖層請求并得到應(yīng)用程序返回的結(jié)果,這一操作是怎么處理的,用戶并不用知道,由此不難看出,模型層是MVC設(shè)計模式的核心,它可以為多個視圖提供所需要的數(shù)據(jù),這也間接的說明了模型具有重用性.視圖層是用戶交互的界面,是用戶和應(yīng)用程序之間信息、數(shù)據(jù)交流的媒介,在Web應(yīng)用程序中它的界面主要是HTML,視圖層也可以進(jìn)行數(shù)據(jù)的收集和處理,但僅限于在視圖本身層面上來進(jìn)行,它不能像模型層那樣對業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)流程進(jìn)行操作,但是它可以查看業(yè)務(wù)流程層中的數(shù)據(jù),不能修改.控制器層主要是將模型和視圖進(jìn)行選擇和連接,它的作用相當(dāng)于一個分發(fā)器,就是根據(jù)接收到的用戶的請求信息,將不同類型的模型和視圖進(jìn)行連接,完成用戶的請求,在這里值得注意的是,模型與視圖間的關(guān)系是多對多的.
MVC設(shè)計模式具有高耦合、重用性高、移植性好的特點(diǎn).在軟件設(shè)計和開發(fā)的過程中,用戶需求有時會改變,當(dāng)用戶的需求發(fā)生改變時,MVC設(shè)計模式只需改變模型層,控制器層與視圖層不需改變,當(dāng)有新的應(yīng)用平臺出現(xiàn)時,程序開發(fā)人員可以將模型直接移植到新的應(yīng)用平臺中,對其視圖和控制器做簡單的修改即可,這也方便了代碼的維護(hù)工作,提高了工作效率.
MVC設(shè)計模式的使用給程序開發(fā)人員帶來了方便,但MVC設(shè)計模式也存在著一些不足.例如,在MVC設(shè)計模式中視圖與控制器雖然分開,但聯(lián)系緊密,沒有了控制器,視圖的功能會受到一定的限制,視圖訪問模型的效率并不高,這是由于在模型層,模型中包含許多接口,視圖有時需要多次調(diào)用數(shù)據(jù)才能獲得用戶所需要的數(shù)據(jù)所造成的,這就簡單產(chǎn)生了視圖會訪問不會發(fā)生變化的數(shù)據(jù)等現(xiàn)象,降低了系統(tǒng)的性能.
但總體來看,MVC設(shè)計模式給應(yīng)用程序的開發(fā)工作帶來了前所未有的突破,程序開發(fā)人員應(yīng)深入的了解MVC設(shè)計模式的相關(guān)知識并加以利用,使MVC設(shè)計模式可以更好的在各個領(lǐng)域發(fā)揮其應(yīng)有的作用.
由上述內(nèi)容可知,傳統(tǒng)的MVC設(shè)計模式將應(yīng)用程序劃分為三個部分,但在開發(fā)Web應(yīng)用程序過程中程序開發(fā)人員會根據(jù)Web應(yīng)用程序的不同場合對MVC設(shè)計模式進(jìn)行相應(yīng)的改進(jìn),以便可以更好的發(fā)揮其作用.在傳統(tǒng)的Web應(yīng)用程序中MVC設(shè)計模式使應(yīng)用程序的交互過程趨于瀏覽器-控制器-視圖-瀏覽器、瀏覽器-控制器-模型-視圖-瀏覽器這兩種方式,這兩種方式雖然使系統(tǒng)的開發(fā)和維護(hù)變得較為方便,但它增大了Web應(yīng)用程序?qū)W(wǎng)絡(luò)帶寬的需求量,增加了服務(wù)器端的任務(wù)量,視圖部分也不能進(jìn)行部分更新.
程序開發(fā)人員因此對MVC設(shè)計模式又進(jìn)行了進(jìn)一步的改進(jìn),服務(wù)器端與客戶端混合型MVC設(shè)計模式,這種模式的交互過程有三種方式,第一種方式為瀏覽器-客戶端控制器-客戶端視圖-瀏覽器、第二種方式是在客戶端視圖進(jìn)行交互前,先訪問服務(wù)器端視圖和客戶端視圖、第三種方式是在客戶端視圖進(jìn)行交互前,先訪問服務(wù)器端控制器、模型、服務(wù)器端視圖,再訪問客戶端視圖、最后將結(jié)果返還給瀏覽器.
雖然這種方式解決了傳統(tǒng)Web應(yīng)用程序中MVC設(shè)計模式中的缺陷,但它不能實現(xiàn)頁面的刷新、業(yè)務(wù)流程和業(yè)務(wù)數(shù)據(jù)的處理也不能在客戶端進(jìn)行.近年來,在Web應(yīng)用程序開發(fā)過程中,RIA-MVC設(shè)計模式逐漸被人們加以運(yùn)用,RIA-MVC設(shè)計模式將模型組件放在服務(wù)器端,而視圖和控制器組件被放在客戶端,這種方式使用戶可以在客戶端完成頁面的部分更新、降低了服務(wù)器的負(fù)載,降低了Web應(yīng)用程序?qū)W(wǎng)絡(luò)帶寬的占用率,上述三種方式都有各自的優(yōu)點(diǎn)與缺點(diǎn).第一種和第二種方式也沒有被完全摒棄,所以,程序開發(fā)人員在對應(yīng)用程序進(jìn)行劃分使要根據(jù)軟件的功能及性能選擇好相應(yīng)的模型.
綜上所述,了解了MVC設(shè)計模式的基本概念和設(shè)計思想,MVC設(shè)計模式就是將應(yīng)用程序抽象為三個部分,這三個部分都有自己的工作任務(wù),但相互協(xié)作,為應(yīng)用程序提供服務(wù),保證了應(yīng)用程序的正常運(yùn)行.還知道了MVC設(shè)計模式有哪些優(yōu)缺點(diǎn),雖然MVC設(shè)計模式存在缺點(diǎn),但它給應(yīng)用程序的開發(fā)帶來的影響是良性的,這就需要軟件設(shè)計者在對MVC模式進(jìn)行劃分時要從軟件的整體結(jié)構(gòu)、實現(xiàn)功能、非功能性等方面進(jìn)行綜合的考量,MVC設(shè)計模式在Web應(yīng)用程序開發(fā)時會根據(jù)應(yīng)用程序的不同會對其進(jìn)行相應(yīng)的改進(jìn).總之,MVC設(shè)計模式可以使應(yīng)用程序具有較高的安全性、靈活性,相信在不久的將來,NVC設(shè)計模式會將軟件領(lǐng)域帶入一個新的臺階.
[1]張利,吳傳勝,崔雷,等.應(yīng)用MVC模式構(gòu)建Web信息系統(tǒng)框架研究[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2007(7):113-115.
[2]李靈華,何麗君.MVC設(shè)計模式在Web應(yīng)用程序開發(fā)中的研究[J].大連民族學(xué)院學(xué)報,2007(1):67-70.
[3]田小波,陳蜀宇.MVC設(shè)計模式在J2EE架構(gòu)下的研究與應(yīng)用[J].西華大學(xué)學(xué)報:自然科學(xué)版,2007(2):138-145.
[4]涂婷婷,段凡丁.MVC設(shè)計模式在B/S開發(fā)中的研究與應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2007(5):234-240.