姜 翠
(咸寧職業(yè)技術(shù)學(xué)院,湖北咸寧437100)
?
MVC設(shè)計(jì)模式在ASP.NET平臺(tái)中的應(yīng)用探究
姜翠
(咸寧職業(yè)技術(shù)學(xué)院,湖北咸寧437100)
[摘要]近些年來(lái),隨著MVC(Model- View- Controller)設(shè)計(jì)模式的日趨成熟化,它在ASP.NET平臺(tái)上的應(yīng)用也越來(lái)越廣泛。作為軟件設(shè)計(jì)的經(jīng)典框架,它通過(guò)表示層、數(shù)據(jù)層與業(yè)務(wù)層等復(fù)合型結(jié)構(gòu)促成了對(duì)計(jì)算機(jī)視圖與控制器功能的實(shí)現(xiàn),提升了軟件開(kāi)發(fā)的系統(tǒng)性與安全性。本文對(duì)MVC設(shè)計(jì)模式的基本功能及其在ASP.NET平臺(tái)中的應(yīng)用特點(diǎn)進(jìn)行了解析,同時(shí)在用戶(hù)信息查詢(xún)的基礎(chǔ)上,對(duì)ASP.NET平臺(tái)當(dāng)中MVC設(shè)計(jì)模式的具體應(yīng)用進(jìn)行具體的探討。
[關(guān)鍵詞]ASP.NET;MVC設(shè)計(jì)模式;視圖;控制器;模型
ASP.NET來(lái)自于微軟公司的新計(jì)算體系平臺(tái)框架,是.NET框架的基本組成部分。該體系結(jié)構(gòu)在很大程度上支持了當(dāng)前的網(wǎng)絡(luò)分布式應(yīng)用,對(duì)傳統(tǒng)的Web開(kāi)發(fā)模型當(dāng)中存在的復(fù)雜繁瑣性以及管理安全性差的缺陷進(jìn)行了有效的改善,并且實(shí)現(xiàn)了比Web頁(yè)面技術(shù)更優(yōu)越的面向?qū)ο蠹夹g(shù)。但從全局來(lái)看,ASP.NET還有不足之處,比如它還依然要在傳統(tǒng)的Web頁(yè)面中顯示信息,且業(yè)務(wù)邏輯與流程控制之間的耦合性依然很高,不利于其工程性應(yīng)用的發(fā)展,同時(shí)也影響了用戶(hù)顯示問(wèn)題模型與用戶(hù)操作I/O交互作用在主操作界面中的相對(duì)穩(wěn)定性。因此,本文采用了MVC設(shè)計(jì)模式結(jié)合ASP.NET框架,根據(jù)現(xiàn)實(shí)系統(tǒng)需求改變和調(diào)整所顯示的內(nèi)容及形式,希望妥善解決上述問(wèn)題。
(一)MVC的基本理論
MVC的基本設(shè)計(jì)模式包括了模型(Model)、視圖(View)、控制器(Controller)三大組成部分。它誕生于20世紀(jì)70年代初期,是第一代基于視窗的計(jì)算機(jī)圖形用戶(hù)界面與用戶(hù)交互平臺(tái)。目前,ASP.NET技術(shù)在計(jì)算機(jī)的大型Web方面具有廣泛應(yīng)用,這也為MVC模式融入平臺(tái)提供了可能??梢哉f(shuō),MVC提升了Web應(yīng)用的可重用性與可擴(kuò)展性,將數(shù)據(jù)訪問(wèn)、業(yè)務(wù)邏輯和用戶(hù)接口完全隔離,并進(jìn)一步強(qiáng)化了計(jì)算機(jī)項(xiàng)目的可擴(kuò)展性、可維護(hù)性以及代碼復(fù)用功能,成為了當(dāng)代設(shè)計(jì)交互式應(yīng)用中的基本標(biāo)準(zhǔn)。
如圖1中所展示,組成MVC設(shè)計(jì)模式的三部分為模型、視圖與控制器。它們彼此之間存在一定的松散耦合性,提高了程序的開(kāi)發(fā)靈活性,避免重復(fù)性代碼的高出現(xiàn)率,達(dá)成了代碼重用功能。
視圖通過(guò)模型展示相關(guān)數(shù)據(jù)和邏輯關(guān)系,凸顯MVC設(shè)計(jì)模式在ASP.NET平臺(tái)中的重要性,也就是對(duì)不同形式的視圖進(jìn)行有效顯示;控制器對(duì)軟件以及用戶(hù)之間的相關(guān)交互操作進(jìn)行有效處理、控制,同時(shí)傳達(dá)模型的任何變化形式,保證用戶(hù)與模型之間時(shí)刻保持聯(lián)動(dòng)性,同時(shí)也接收來(lái)自于用戶(hù)的所有信息,最后凸顯模型的計(jì)算控制能力,所以控制器從整體來(lái)看就是模型與視圖之間的協(xié)調(diào)組件;最后是模型,視圖實(shí)現(xiàn)了模型的存儲(chǔ)功能,而控制器則負(fù)責(zé)管理模型數(shù)據(jù),生成基于核心數(shù)據(jù)的計(jì)算關(guān)系和邏輯功能,使得模型更具獨(dú)立性。
從整體來(lái)看,視圖、控制器與模型三者之間是完全分離的,它們?yōu)槟P蛯?shí)現(xiàn)了多視圖顯示功能。但是它們之間又存在聯(lián)系,如果用戶(hù)改變了某個(gè)視圖控制器中有關(guān)模型的數(shù)據(jù),那么這個(gè)視圖的數(shù)據(jù)也會(huì)發(fā)生改變,牽動(dòng)控制器中所有視圖的變化與更新??梢哉f(shuō),它反映了基于模型數(shù)據(jù)變化的一種信息傳播機(jī)制,也體現(xiàn)了MVC設(shè)計(jì)模式中三者之間的相互關(guān)系與各自功能關(guān)聯(lián)。
(二)MVC設(shè)計(jì)模式在ASP.NET平臺(tái)建設(shè)中所體現(xiàn)的優(yōu)勢(shì)
對(duì)ASP.NET平臺(tái)的建設(shè)可以在一定程度上強(qiáng)化MVC設(shè)計(jì)模式的開(kāi)發(fā)及運(yùn)用,凸顯MVC在平臺(tái)建設(shè)中的優(yōu)勢(shì)。
1.降低Web頁(yè)面依賴(lài)性
如前文所說(shuō),新的MVC設(shè)計(jì)模式減少了計(jì)算機(jī)系統(tǒng)對(duì)Web主頁(yè)面的依賴(lài)性,提升了對(duì)代碼的重用功能,這是因?yàn)镸VC特別強(qiáng)調(diào)了ASP.NET平臺(tái)在建設(shè)過(guò)程中的頁(yè)面設(shè)計(jì)代碼分離。
2.ASP.NET平臺(tái)設(shè)計(jì)清晰化
MVC的加入讓模型能夠在同一時(shí)間內(nèi)建立并使用多個(gè)視圖,使得模型數(shù)據(jù)變化與傳播機(jī)制都發(fā)生改變,實(shí)現(xiàn)了所有關(guān)聯(lián)視圖與控制器之間的行為同步。正是這種同步性激發(fā)了MVC設(shè)計(jì)模式在運(yùn)用程序中可拓展性的發(fā)揮,使得平臺(tái)在實(shí)現(xiàn)某些功能時(shí)更加輕松協(xié)調(diào),允許了多控制器的使用。在這種傳播機(jī)制下,模型的改變也提升了控制器獨(dú)立工作的能力。
3.MVC設(shè)計(jì)模式中模型的可移植性
MVC中的模型全部獨(dú)立于視圖之外,將它們單獨(dú)移植到某個(gè)ASP.NET之外的新平臺(tái)上,其操作方法就是在新平臺(tái)上對(duì)視圖與控制器數(shù)據(jù)進(jìn)行全面修改。由此可見(jiàn),MVC設(shè)計(jì)模式能夠?yàn)锳SP.NET創(chuàng)造更多全新的平臺(tái)結(jié)構(gòu),讓MVC設(shè)計(jì)模式不僅局限于設(shè)計(jì)基本的系統(tǒng)界面。
(一)MVC的應(yīng)用模型分析
ASP.NET為MVC設(shè)計(jì)模式提供了直接可用的應(yīng)用環(huán)境,利用code- behind代碼對(duì)顯示頁(yè)面中用戶(hù)交互功能的處理。在這里,code- behind源代碼文件與.aspx文件之間相互對(duì)應(yīng),腳本語(yǔ)言、HTML代碼以及邏輯控制代碼之間的分離依靠源代碼文件得到最終的實(shí)現(xiàn)。此外,ASP. NET這一系統(tǒng)也通過(guò)表示層、數(shù)據(jù)層與業(yè)務(wù)層三層Web結(jié)構(gòu)劃實(shí)現(xiàn)了視圖與控制器功能,并將MVC中的三大部分映射回ASP.NET的平臺(tái)結(jié)構(gòu)里面,并基于MVC模式下對(duì)ASP.NET平臺(tái)系統(tǒng)的應(yīng)用模型進(jìn)行進(jìn)一步的構(gòu)建。以Web系統(tǒng)當(dāng)中的“用戶(hù)信息查詢(xún)模塊”為例,應(yīng)用模型的建立基本實(shí)現(xiàn)了MVC在ASP.NET平臺(tái)中的應(yīng)用機(jī)制。如圖2。
(二)視圖實(shí)現(xiàn)
ASP.NET平臺(tái)的開(kāi)發(fā)環(huán)境當(dāng)中,視圖的設(shè)計(jì)更加地便捷。利用Visual Studio.NET便可獲得視圖設(shè)計(jì)所需的Web窗體、HTML控件以及各種各樣的組件。這些控件都鑲嵌于Web自定義系統(tǒng)之中,它們幫助計(jì)算機(jī)的Windows界面實(shí)現(xiàn)了對(duì)視圖的可視化設(shè)計(jì),并且讓視圖與各個(gè)模塊中的.aspx文件也實(shí)現(xiàn)了一一對(duì)應(yīng),優(yōu)化了各個(gè)用戶(hù)界面的操作性。
圖1 MVC設(shè)計(jì)模式中各組件類(lèi)型之間的功能關(guān)系示意圖
以XX企業(yè)的績(jī)效信息平臺(tái)為例,各個(gè)模塊與視圖當(dāng)中的.aspx文件一一對(duì)應(yīng),系統(tǒng)當(dāng)中的用戶(hù)界面都有與之相互對(duì)應(yīng)的.aspx文件進(jìn)行匹配。在XX企業(yè)的績(jī)效信息平臺(tái)系統(tǒng)的設(shè)計(jì)過(guò)程中,通過(guò)對(duì)責(zé)任人、績(jī)效測(cè)量員、系統(tǒng)管理人員、企業(yè)員工用戶(hù)的需要進(jìn)行分析,對(duì)測(cè)量、分析、修改、評(píng)價(jià)、查詢(xún)、指標(biāo)管理等相關(guān)界面進(jìn)行合理、科學(xué)的定義。這其中,“測(cè)量”這一核心業(yè)務(wù)流程最能說(shuō)明視圖設(shè)計(jì)的實(shí)現(xiàn):系統(tǒng)為視圖的設(shè)計(jì)提供一定的過(guò)程選擇接口,依照相關(guān)的權(quán)限,企業(yè)測(cè)量人員對(duì)企業(yè)的績(jī)效考核過(guò)程進(jìn)行選擇。在測(cè)量的過(guò)程中,系統(tǒng)提供了一定的時(shí)間選擇接口,視圖當(dāng)中可以對(duì)每一個(gè)過(guò)程進(jìn)行測(cè)量界面的顯示,相關(guān)的指標(biāo)以及時(shí)間均為實(shí)測(cè)值。
(三)控制器實(shí)現(xiàn)
MVC設(shè)計(jì)模式的加入使得ASP.NET平臺(tái)在代碼分離功能機(jī)制方面得到了強(qiáng)化,它可以簡(jiǎn)化視圖中的各個(gè)代碼,使控制器、模型之間的代碼分離,使每個(gè).aspx文件都對(duì)應(yīng)一個(gè)后端代碼.cs,實(shí)現(xiàn)控制器功能,使Controller能夠更好地接收、截獲和處理來(lái)自于用戶(hù)的各種請(qǐng)求與突發(fā)事件。就以用戶(hù)數(shù)據(jù)查詢(xún)模塊視圖UserInfo.aspx所對(duì)應(yīng)的Controller為例,根據(jù)用戶(hù)所輸入的個(gè)人ID來(lái)查詢(xún)出他的基本信息,所以控制器的具體實(shí)現(xiàn)流程為:
Public class UserInfo:System.Web.UI.Page
{Protected System.Web.UI.WebControls.DataGrid dgU-serInfo;//聲明DataGrid控件}
Protected System.Web.UI.WebControls.Button btnSubm it;//聲明Button控件,提交按鈕
Protected System.Web.UI.WebControls.TextBox tbID;//聲明TextBox控件,用戶(hù)填寫(xiě)ID數(shù)據(jù)
UserInfoBiz useInofo=new UserInfoBiz();//實(shí)例化對(duì)應(yīng)業(yè)務(wù)邏輯類(lèi)
{Stringid=tbID.Text;//用戶(hù)輸入于textbox中的數(shù)據(jù)
dgUserIofo.DataSource=ds.Tables[0].DefaultView;//截取數(shù)據(jù)源
dgUserIofo.DataBind();//綁定控件,聯(lián)系到指定數(shù)據(jù)源}
void btnSubmit_Click(Object sender,EventArgs)//提交按鈕事件
(四)模型實(shí)現(xiàn)
模型在ASP.NET平臺(tái)的作用就是管理應(yīng)用程序域中的各種數(shù)據(jù)和行為,它銜接了數(shù)據(jù)庫(kù)與業(yè)務(wù)邏輯數(shù)據(jù),提升了系統(tǒng)的公共交互操作性。在基本類(lèi)庫(kù)中定義DataBase類(lèi),將其變成能夠在系統(tǒng)平臺(tái)的公共數(shù)據(jù)庫(kù)中操作使用的基本類(lèi),做到基本類(lèi)與數(shù)據(jù)庫(kù)之間的連接和交互。在此過(guò)程中,控制器以后端代碼.cs文件來(lái)組成新的Biz層,達(dá)到完善模型的目的。
圖2 在ASP.NET平臺(tái)中MVC設(shè)計(jì)模式的應(yīng)用
參考文獻(xiàn):
[1]庫(kù)爾班江·托乎提.MVC設(shè)計(jì)模式在ASP.NET平臺(tái)中的應(yīng)用[J].信息系統(tǒng)工程,2015(2)∶14.
[2]陳佳.ASP.NET系統(tǒng)開(kāi)發(fā)中MVC設(shè)計(jì)模式的應(yīng)用研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009(7)∶46- 52.
[3]徐朝輝,樊銀亭.MVC設(shè)計(jì)模式在ASP.NET應(yīng)用開(kāi)發(fā)中的研究和實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2007,1 (6)∶1536- 1537.
[4]張?jiān)?,張昭,劉?基于MVC設(shè)計(jì)模式的虛擬實(shí)驗(yàn)平臺(tái)模塊化設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2013,35(8)∶125- 129.
[5]李園,陳世平.MVC設(shè)計(jì)模式在ASP.NET平臺(tái)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(7):152- 153.
[6]任艷斐.MVC設(shè)計(jì)模式在基于ASP.NET系統(tǒng)開(kāi)發(fā)中的應(yīng)[J].科技廣場(chǎng),2008(5)∶168- 169.
[中圖分類(lèi)號(hào)]TP308
[文獻(xiàn)標(biāo)識(shí)碼]A
[文章編號(hào)]1673- 0046(2016)4- 0183- 03
太原城市職業(yè)技術(shù)學(xué)院學(xué)報(bào)2016年4期