李翠松 常淑華 候睿崢
摘 要:本文分析了ASP.NET的特點(diǎn),提出了采用MVC+HTML技術(shù)搭建基于ASP平臺(tái)的在線考試系統(tǒng),實(shí)現(xiàn)了業(yè)務(wù)邏輯和數(shù)據(jù)表示分離的模式,同時(shí)針對(duì)asp中的mvc設(shè)計(jì)模式做出詳細(xì)的說(shuō)明
關(guān)鍵詞:MVC;WEB;ASP
引 言
傳統(tǒng)的網(wǎng)站一般是采用靜態(tài)網(wǎng)頁(yè)技術(shù)制作的靜態(tài)網(wǎng)頁(yè)網(wǎng)站,但是為了越來(lái)越大以及繁雜的需求。目前,絕大部分網(wǎng)站為了更好的實(shí)現(xiàn)用戶與網(wǎng)站的互動(dòng)性,一部分已經(jīng)實(shí)現(xiàn)靜態(tài)網(wǎng)站動(dòng)態(tài)化,或者說(shuō)是動(dòng)態(tài)網(wǎng)站也不為過(guò)。因此大大提高了用戶的互動(dòng)能力。其次,網(wǎng)站的功能也豐富起來(lái)。然而,建設(shè)一個(gè)動(dòng)態(tài)網(wǎng)站,ASP.NET是非常有效的利器。
一、靜態(tài)網(wǎng)站的優(yōu)缺點(diǎn)
就靜態(tài)網(wǎng)站本身而言,它能沿用如此之久,必然是有可取之處的。例如,加載的時(shí)候不需要調(diào)動(dòng)數(shù)據(jù)庫(kù),響應(yīng)速度快,減少了服務(wù)器對(duì)數(shù)據(jù)響應(yīng)的負(fù)荷,從安全角度講,靜態(tài)網(wǎng)頁(yè)不易遭受黑客攻擊,從網(wǎng)站穩(wěn)定性來(lái)講,如果程序、數(shù)據(jù)庫(kù)出了問(wèn)題,會(huì)直接影響網(wǎng)站的訪問(wèn),而靜態(tài)網(wǎng)頁(yè)就避免了如此情況,不會(huì)因?yàn)槌绦虻?,而損失網(wǎng)站數(shù)據(jù),影響正常打開(kāi),損失用戶體驗(yàn),影響網(wǎng)站信任度。
同時(shí)它也有不可否認(rèn)的缺點(diǎn),就像一把雙刃劍,生成大量文件的時(shí)候,服務(wù)器對(duì)html文件的響應(yīng)負(fù)擔(dān)也較重,還有,維護(hù)極其不方便,每次都要手動(dòng)生成網(wǎng)頁(yè),當(dāng)網(wǎng)站龐大的時(shí)候會(huì)苦不堪言。3、空間占用大(多占用近一倍的空間)對(duì)于站長(zhǎng)來(lái)說(shuō)沒(méi)有必要浪費(fèi)空間的成本,舉個(gè)例子:如果是一個(gè)大型的網(wǎng)站,特別是資訊類網(wǎng)站來(lái)說(shuō),如果每個(gè)頁(yè)面都變成靜態(tài)頁(yè)面,那工作量肯定非常大,同時(shí)也非常不利于網(wǎng)站的維護(hù),因?yàn)殪o態(tài)網(wǎng)站是沒(méi)有數(shù)據(jù)庫(kù)的,每個(gè)頁(yè)面都需要人工檢查,如果網(wǎng)站的鏈接出現(xiàn)錯(cuò)誤,想要糾正,往往就需要花費(fèi)很長(zhǎng)的時(shí)間來(lái)逐個(gè)排查!
二、MVC設(shè)計(jì)模式分析
(1)MVC設(shè)計(jì)模式
首先說(shuō)說(shuō)它的定義,MVC 設(shè)計(jì)模型是一種使用 Model View Controller(模型-視圖-控制器)設(shè)計(jì)創(chuàng)建 Web 應(yīng)用程序的模式,通常為了實(shí)現(xiàn)程序的“高內(nèi)聚,低耦合”我們主要把應(yīng)用程序分成了三層。其中視圖層主要是為了實(shí)現(xiàn)與用戶進(jìn)行交流操作的界面,通常是由前端開(kāi)發(fā)人員來(lái)完成;模型又是核心,它是網(wǎng)站處理程序執(zhí)行順序與邏輯,完成對(duì)數(shù)據(jù)在數(shù)據(jù)庫(kù)中的各種操作;控制主要處理人機(jī)交互的部分,負(fù)責(zé)讀取視圖中存儲(chǔ)的數(shù)據(jù),控制用戶輸入;完成用戶請(qǐng)求的邏輯在模型(Model)中實(shí)現(xiàn),然后處理的結(jié)果會(huì)反饋回視圖(View)中顯示。控制器則充當(dāng)中間控制功能,根據(jù)用戶的的請(qǐng)求調(diào)用相關(guān)的模型,然后把瀏覽器的處理結(jié)果傳遞給視圖,最后視圖展示最后的處理結(jié)果。MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的分布分工,對(duì)程序動(dòng)態(tài)的程序設(shè)計(jì),使后續(xù)對(duì)程序代碼的修改和系統(tǒng)擴(kuò)展簡(jiǎn)化并且使程序某部分能夠重復(fù)利用??偟膩?lái)說(shuō)MVC設(shè)計(jì)模式可以方便開(kāi)發(fā)人員分工協(xié)作,提高開(kāi)發(fā)效率,增強(qiáng)程序的可維護(hù)性和拓展性而且還利用Controller將Model與View分離,降低它們之間的耦合度。
(2)MVC特點(diǎn)
①一個(gè)模型提供不同的多個(gè)視圖表現(xiàn)形式,也能夠?yàn)橐粋€(gè)模型創(chuàng)建新的視圖而無(wú)須重寫模型。一旦模型的數(shù)據(jù)發(fā)生變化,模型將通知有關(guān)的視圖,每個(gè)視圖相應(yīng)地刷新自己。
②模型可復(fù)用。因?yàn)槟P褪仟?dú)立于視圖的,所以可以把一個(gè)模型獨(dú)立地移植到新的平臺(tái)工作
③較低的開(kāi)發(fā)周期成本。MVC能夠有效降低降低開(kāi)發(fā)和維護(hù)用戶接口的費(fèi)用。
④可維護(hù)性。分離視圖層和業(yè)務(wù)邏輯層也使得WEB應(yīng)用更易于維護(hù)和修改。將邏輯層和表示層相分離使開(kāi)發(fā)人員節(jié)省了大量的后期維護(hù)時(shí)間。
三、WEB架構(gòu)
基于“WEB頁(yè)面/文件”架構(gòu),例如CGI和PHP/ASP程序。程序的文件分別存儲(chǔ)在不同的目錄里,與URL相對(duì)應(yīng)。當(dāng)HTTP請(qǐng)求提交至服務(wù)器時(shí),URL直接指向某個(gè)文件,然后由該文件來(lái)處理請(qǐng)求,并返回響應(yīng)結(jié)果??梢韵胂瘢覀?cè)谡军c(diǎn)根目錄的news目錄下放置一個(gè)readnews.php文件。這種開(kāi)發(fā)方式最自然,最易理解,也是PHP最常用的方式。要注意產(chǎn)生的URL對(duì)搜索引擎不友好,不過(guò)你可以用服務(wù)器提供的URL重寫方案來(lái)處理,例如Apache的mod_rewrite。
基于“動(dòng)作”(Action)架構(gòu),這是MVC架構(gòu)的WEB程序所采用的最常見(jiàn)的方式。目前主流的WEB框架像Struts、Webwork(Java),Ruby on Rails(Ruby),Zend Framework(PHP)等都采用這種設(shè)計(jì)。URL映射到控制器(controller)和控制器中的動(dòng)作(action),由action來(lái)處理請(qǐng) 求并輸出響應(yīng)結(jié)果???以想像在實(shí)際代碼中,我們會(huì)有一個(gè)控制器newsController,其中有一個(gè)readAction。不同框架可能默認(rèn)實(shí)現(xiàn)方式稍有不同,有的是一個(gè) Controller一個(gè)文件,其中有多個(gè)Action,有的是每個(gè)Action一個(gè)文件。當(dāng)然這些你都可以自己控制,使用MVC體系結(jié)構(gòu),能夠使業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離。江浙兩種技術(shù)一起使用可以使程序更精簡(jiǎn),耦合性更少。
基于“組件”(Component,GUI設(shè)計(jì)也常稱控件)、事件驅(qū)動(dòng)的架構(gòu),最常見(jiàn)的是微軟的.NET?;舅枷胧前殉绦蚍殖珊芏嘟M件,每個(gè)組件都可以觸發(fā)事件,調(diào)用特定的事件處理器來(lái)處理(比如在一個(gè)HTML按鈕上設(shè)置onClick事件鏈接到一個(gè)PHP函數(shù))。這種設(shè)計(jì)遠(yuǎn)離HTTP,HTTP請(qǐng)求完全抽象,映射到一個(gè)事件。事實(shí)上這種設(shè)計(jì)原本最常應(yīng)用于傳統(tǒng)桌面GUI程序的開(kāi)發(fā),例如Delphi,Java Swing等。所有表現(xiàn)層的組件比如窗口,或者HTML表單都可以由IDE來(lái)提供,我們只需要在IDE里點(diǎn)擊或拖動(dòng)鼠標(biāo)就能夠自動(dòng)添加一個(gè)組件,并且添加一個(gè)相應(yīng)的事件處理器。
四、基于ASP三層架構(gòu)的網(wǎng)站建設(shè)
ASP具有良好的擴(kuò)充性,我們?cè)L問(wèn)數(shù)據(jù)庫(kù)時(shí),采用的時(shí)ADO對(duì)象,訪問(wèn)文件時(shí),采用的是文件系統(tǒng)對(duì)象(FSO),其實(shí)這時(shí)程序已經(jīng)是三層結(jié)構(gòu)的應(yīng)用程序了,只不過(guò)由于是利用內(nèi)置的對(duì)象而為意識(shí)到罷了。這些對(duì)象都遵循COM/ActiveX接口,因此我們自己開(kāi)發(fā)的對(duì)象也要遵循這個(gè)接口。
對(duì)于三層架構(gòu)來(lái)說(shuō),就是使用類,把我們?cè)谧鲰?xiàng)目的過(guò)程中,可能需要反復(fù)操作數(shù)據(jù)庫(kù),反復(fù)的使用某個(gè)方法等等,可能就是操作的參數(shù)不同。如果我們?nèi)绻诿看问褂玫臅r(shí)候,都去編寫相應(yīng)的代碼,無(wú)疑會(huì)增加程序員的負(fù)擔(dān)。所以,為了增加方法的重用,就把這些能夠重用的方法抽象成類,以供程序員在其它地方可以調(diào)用。
建設(shè)一個(gè)網(wǎng)站,我們首先要明晰需求,在確定需求后,采用model/view/controller的三層體系結(jié)構(gòu)。view接受用戶通過(guò)瀏覽器發(fā)送的請(qǐng)求并做出相應(yīng)。controller作為系統(tǒng)中的控制器,它能根據(jù)用戶的不同請(qǐng)求,相應(yīng)的調(diào)用不同的ASP頁(yè)面。
系統(tǒng)的關(guān)鍵板塊有:
(1)主界面模板
將在線考試網(wǎng)站按照需求分成用戶登錄,考試通知,成績(jī)查詢,用戶查詢等板塊,通過(guò)CSS和JavaScript技術(shù)實(shí)現(xiàn)樣式和動(dòng)畫效果,使各種信息使用結(jié)構(gòu)和樣式統(tǒng)一的Web頁(yè)面,適應(yīng)各種課程內(nèi)容的管理。
(2)菜單管理
確定在線考試網(wǎng)的目錄結(jié)構(gòu)。不同菜單的結(jié)構(gòu)一般不同,其展開(kāi)列表也不同。因此,在網(wǎng)站開(kāi)發(fā)的過(guò)程中,我們可以使用數(shù)據(jù)庫(kù)的無(wú)限分級(jí)技術(shù),有效利用數(shù)據(jù)庫(kù)的性能,實(shí)現(xiàn)各級(jí)列表的動(dòng)態(tài)管理可以有效的避免欄目和其列表之間的復(fù)雜的嵌套關(guān)系,同時(shí)還可以在數(shù)據(jù)庫(kù)中清除的查詢,不會(huì)導(dǎo)致多菜單造成的管理混亂。
(3)后臺(tái)管理
網(wǎng)站結(jié)構(gòu)確定后,可以搭建后臺(tái)管理員界面,將需要管理的模塊與數(shù)據(jù)庫(kù)相連,比如試卷題目上傳修改,試卷批改,簡(jiǎn)單的選擇填空自動(dòng)批卷所需要的答案庫(kù),還有某些用戶的權(quán)限管理。
(4)整合部署Web項(xiàng)目
根據(jù)需要的功能,做出相應(yīng)模塊后,因?yàn)閍sp的可混編性可以高效的與后臺(tái)通訊,在已經(jīng)搭建好環(huán)境的windowserver服務(wù)器上部署項(xiàng)目,將網(wǎng)站源碼部署到iis的默認(rèn)網(wǎng)站根目錄下,配置域名,進(jìn)行測(cè)試。
五、結(jié)束語(yǔ)
本文介紹了MVC結(jié)構(gòu)和三種WEB架構(gòu),對(duì)三種架構(gòu)做了詳細(xì)的分析。同時(shí)也說(shuō)明了基于ASP使用MVC模式設(shè)計(jì)網(wǎng)站的方式,提出了基于MVC模式和B/S結(jié)構(gòu)使用ASP技術(shù)制作動(dòng)態(tài)網(wǎng)站的方案。
2017大學(xué)生創(chuàng)新項(xiàng)目《吉林農(nóng)業(yè)科技學(xué)院學(xué)生在線考試系統(tǒng)》 項(xiàng)目編號(hào):2017133
通訊作者:常淑華
參考文獻(xiàn)
[1]何成萬(wàn)等.基于MVC模式的科研成果管理系統(tǒng)開(kāi)發(fā)[J].武漢工程大學(xué)學(xué)報(bào),2009,31(1):79~82.
[2]薛德樞.通用精品課程網(wǎng)站開(kāi)發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].大連理工大學(xué),2008.
[3]陽(yáng)西述等.基于UML和MVC的精品課程網(wǎng)站設(shè)計(jì)[J].現(xiàn)代計(jì)算機(jī),2011(9):59~62.
[4]王明等.基于MVC科研管理系統(tǒng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)應(yīng)用,2009,30(1):77~80.
[5]王立明.基于 MVC 架構(gòu)的網(wǎng)絡(luò)教學(xué)管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[D].甘肅:蘭州大學(xué),
2012:14-16
(作者單位:吉林農(nóng)業(yè)科技學(xué)院)