周寶昌
摘要:該文對(duì)基于ASP.NET MVC6開發(fā)框架進(jìn)行WEB應(yīng)用開發(fā),進(jìn)行使用介紹。對(duì)MVC框架設(shè)計(jì)模式進(jìn)行了概述,通過實(shí)際測(cè)試發(fā)現(xiàn)存在的問題,在給予糾正之后獲得了較好的使用效果。
關(guān)鍵詞:框架模式;WEB;應(yīng)用開發(fā);MVC
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)02-0101-03
1 MVC設(shè)計(jì)模式概述
ASP.NET是微軟公司的服務(wù)器端應(yīng)用編程技術(shù),它以Web頁面和服務(wù)器控件為中心,ASP.NET MVC是微軟公司提供的,以MVC模式為基礎(chǔ)的WEB應(yīng)用程序開發(fā)框架?;贛VC模式開發(fā)框架下的ASP.NET,與傳統(tǒng)WEB應(yīng)用程序開發(fā)模式有所區(qū)別。MVC模式開發(fā)框架下,將用戶輸入、業(yè)務(wù)邏輯、用戶界面三者之間進(jìn)行分離,使得項(xiàng)目開發(fā)復(fù)雜性降低,并且增強(qiáng)了項(xiàng)目的可測(cè)試性。不同人員可以對(duì)不同部分進(jìn)行同時(shí)開發(fā),對(duì)項(xiàng)目組并開發(fā)能力來說是一大提高。MVC并不是一種程序語言,從嚴(yán)格意義上講也不能稱作一門技術(shù),它是WEB應(yīng)用程序開發(fā)時(shí)所用到的一種框架。MVC是一種使用 MVC(Model View Controller 模型-視圖-控制器)設(shè)計(jì)創(chuàng)建Web應(yīng)用程序的模式,Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)、View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)、Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。MVC框架模式是被廣大Web應(yīng)用程序開發(fā)人員所熟悉的一種開發(fā)模式。MVC框架模式如(圖1)所示:、
Model(模型):Model為MVC框架的主體部分,用于封裝與應(yīng)用程序業(yè)務(wù)相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法。Model(模型)與view(視圖)之間的關(guān)系可以表示為:?jiǎn)我慌c多種的關(guān)系。Model將數(shù)據(jù)結(jié)果處理之后,提供給View處理。Model對(duì)數(shù)據(jù)結(jié)果如何顯示或者如何操作,并不直接參與。
View(視圖):View(視圖)是用戶可以直接瀏覽,并與之交互的界面。View與Model兩者之間相互聯(lián)系,Model將處理數(shù)據(jù)提供給View,View將數(shù)據(jù)接收后進(jìn)行處理,然后根據(jù)客戶需求將數(shù)據(jù)結(jié)果進(jìn)行呈現(xiàn)。View只是一個(gè)提供數(shù)據(jù)輸出和用戶操作的界面,并且View并不提供任何與操作邏輯相關(guān)的代碼。
Controller(控制器):Controller的主要工作職責(zé)是將用戶的輸入和請(qǐng)求進(jìn)行接收,并且聯(lián)合Model和View進(jìn)行聯(lián)合處理,三者之間相互配合完成結(jié)果。在實(shí)際運(yùn)行過程之中,Controller一方面將數(shù)據(jù)結(jié)果返回到Model上進(jìn)行處理,另一方面,Controller將數(shù)據(jù)結(jié)果傳送給View進(jìn)行實(shí)際顯示。
2 ASP.NET MVC6版本新特性
ASP.NET MVC6已出爐多時(shí),但現(xiàn)在很多項(xiàng)目都還在使用MVC4,所以MVC6還尚未流行開來,但是從各大新聞報(bào)紙媒體上都能或多或少的知道它的跨平臺(tái)特性,這也就彌補(bǔ)的ASP.NET一直以來的缺憾,MVC6吸納了當(dāng)前web前端主流技術(shù),可以說是專為迎合前端開發(fā)人員而推出的新的框架。重要的是,微軟重寫了該框架并且開源,性能得到提升,如按需加載特性使得不再加載各種龐大的諸如system.web.Ill之類的程序集,其依賴的DNX做到了跨平臺(tái)運(yùn)行。在新版MVC6中,有很多變化,有些是徹底的變化,比如在最底層支持依賴注入技術(shù)。MVC6會(huì)引入一些新功能,最引人注目的功能就是TAG Helpers和View Components。Tag Helpers是HTML Helpers的一種替換,而View Components則引入里類似Web Forms中的Web Control的概念。在MVC6中,還有一些與傳統(tǒng)版本不相同的寫法,例如:統(tǒng)一開發(fā)模型:
普通寫法:
@HTML.Validation Summary(true, "", new { @class = "text-danger" })
@HTML.Label For(m => m.Surname, new { @class = "col-md-2 control-label" })
@HTML.Textbook(m => m.Surname, new { @class = "form-control" })
@HTML.Professionalization(m => m.Surname, "", new { @class = "text-danger" })
MVC6寫法:
相比之下,MVC6框架模式下的寫法更加簡(jiǎn)潔。
在MV5出現(xiàn)不久之后,MVC 6已經(jīng)很快出現(xiàn)在微軟的官方網(wǎng)頁,令人感嘆技術(shù)的快速演進(jìn),讓程序員也追得非常辛苦。不管是前端也好或是后端,快速發(fā)展的技術(shù)已經(jīng)是IT行業(yè)的常態(tài)了,所以做這一行的人要有所認(rèn)識(shí),將快速演進(jìn)視為一種享受,應(yīng)為再怎么變,基礎(chǔ)知識(shí)還是那些,所以只要掌握基礎(chǔ),它再怎么變也不會(huì)脫離基礎(chǔ)的技術(shù)原理。MVC6也是如此。MVC 6是ASP.NET Core平臺(tái)的其中之一,MVC6將MVC和Web API兩者整合,并且更新ASP.NET Routing的核心,讓MVC和Web API能適于同一個(gè)Routing API,而MVC和Web API同時(shí)共用Model以及Controller(Web API的Controlled并入MVC的Controller 基礎(chǔ)類別),也就是之后所有適合在MVC中的寫法,都能用于Web API,反之亦然。Razor仍然是MVC 6 的View的首選指令碼架構(gòu),而JSON的生成則沒有太大變化。
3 ASP.NET MVC6應(yīng)用程序目錄結(jié)構(gòu)
ASP.NET MVC是一個(gè)以習(xí)慣替換配置的開發(fā)框架,它將通過MVC設(shè)計(jì)模式常見的規(guī)則,切割成Model、View、Controller三個(gè)部分,而且明確定義開發(fā)人員必須按照特定的“習(xí)慣”來開發(fā)程序。
使用中間件:在ASP.NET 5中,DI是強(qiáng)烈推薦使用的。所以.NET團(tuán)隊(duì)推出了一個(gè)可以適配主流.NET的Doc框架的DI組(Microsoft.Framework.Dependency Injection)。在該組件中,有一個(gè)擴(kuò)展方法Addams()來把MVC的Controller注入容器中。通過Bemuse()來確認(rèn)MVC相關(guān)的注入已經(jīng)完成。修改一下Starbucks.cs文件(圖2)。
1) 使用Configure Services(Collectivism services)方法:
Configure Services(Collectivism services)方法在應(yīng)用程序啟動(dòng)時(shí),NET Framework會(huì)自動(dòng)調(diào)用該方法。在該方法調(diào)用完成后,才去調(diào)用Configure(Oversimplification app)方法。
2) 路由:在MVC6里,默認(rèn)的靜態(tài)路由表沒有了,可以通過Bemuse()方法來添加路由。首先在Starbucks.cs文件中添加引用:using Microsoft.Asp Net.Routing。然后通過下面的方法來添加默認(rèn)路由。
3) 控制器:在MVC6里,很大的一個(gè)改動(dòng)是Controller不再需要繼承那個(gè)名字是Controller的基類,但是實(shí)際中你可能習(xí)慣了繼承它,所以這個(gè)習(xí)慣是可以保持的。MVC框架會(huì)自動(dòng)的搜索 Controller的類,并認(rèn)為它就是一個(gè)控制器。
4 ASP.NET MVC框架開發(fā)WEB應(yīng)用程序所具有的優(yōu)缺點(diǎn)
MVC框架所具有的優(yōu)點(diǎn):1)具有可維護(hù)性:MVC框架具有關(guān)注點(diǎn)分離,具有相對(duì)較高的可維護(hù)性。在實(shí)際工作中對(duì)項(xiàng)目進(jìn)行開發(fā)時(shí),我們只會(huì)將注意力集中在項(xiàng)目本身,而不會(huì)應(yīng)其他事物分散了注意力,使得我們能夠更加專注的完成項(xiàng)目。2)具有較高的開發(fā)效率:基于ASP.NET MVC框架下開發(fā)WEB應(yīng)用程序,本身就是一個(gè)較為高效率的開發(fā)工具。其最大優(yōu)點(diǎn)就是可以采用 Visual Studio 進(jìn)行開發(fā),尤其是在后來新改進(jìn)的版本中,例如VisualStudio2012新增了許多ASP.NETMVC的開發(fā)支持,對(duì)開發(fā)效率給予了很大程度的提升。3)易于進(jìn)行測(cè)試:在對(duì)項(xiàng)目進(jìn)行測(cè)試時(shí),可以通過各種測(cè)試框架(如Visual Studio、Unit Test、N Unit等),輕易地實(shí)現(xiàn)測(cè)試導(dǎo)向開發(fā)流程到專案中。4)架構(gòu)易于分工:MVC框架具有關(guān)注點(diǎn)能夠分離的特性,在對(duì)項(xiàng)目進(jìn)行開發(fā)的過程中,早期開發(fā)階段就能對(duì)其進(jìn)行分工,不用等到核心工作完成后再開始進(jìn)行開發(fā)或者集成。
MVC框架所具有的缺點(diǎn):1)沒有那么多的現(xiàn)成控件使用,開發(fā)效率相對(duì)較低(特別是對(duì)于菜鳥來說)。2)對(duì)于大型數(shù)據(jù)的處理比較難,還是因?yàn)闆]有現(xiàn)成gird view控件。這個(gè)控件雖然生成的HTML結(jié)構(gòu)異常復(fù)雜,但是對(duì)于處理大量而且復(fù)雜的數(shù)據(jù)來說是很不錯(cuò)的。不過一般網(wǎng)站是很少有這種大量且復(fù)雜的數(shù)據(jù),很多菜鳥都是用這個(gè)大炮來打子,浪費(fèi)且低效率。對(duì)于網(wǎng)站開發(fā)來說這個(gè)控件應(yīng)該不推薦使用。采用這種模式,適合項(xiàng)目的擴(kuò)展和維護(hù)。如果是小項(xiàng)目的話就沒必要采用了,過于浪費(fèi)資源。
5 基于ASP.NET MVC6的WEB應(yīng)用開發(fā)
ASP.NET MVC6框架是一種較為先進(jìn)的應(yīng)用開發(fā)方式,相對(duì)于以前的版本,性能具有較大提升。使得開發(fā)過程更加規(guī)范精煉,本文選取了某地的一個(gè)實(shí)際項(xiàng)目進(jìn)行開發(fā)測(cè)試。
5.1 系統(tǒng)概述
本文選取了我省資格證書考試系統(tǒng),該系統(tǒng)是基于ASP.NET MVC6開發(fā)框架進(jìn)行完成。主要完成學(xué)員考試的報(bào)名、管理、考試、證書發(fā)放等一系列功能。此考試系統(tǒng)由上崗證考試子系統(tǒng)、識(shí)別師考試子系統(tǒng)、鑒別師考試子系統(tǒng)三個(gè)部分組成。該系統(tǒng)的結(jié)構(gòu)模塊分為以下幾部分:第一,上崗證考試子系統(tǒng);第二,識(shí)別師考試子系統(tǒng);第三,鑒別師考試子系統(tǒng);第四,考生個(gè)人支持平臺(tái);第五,后臺(tái)管理系統(tǒng)。
5.2 系統(tǒng)實(shí)際測(cè)試
由于本文篇幅有限,不能詳盡描述,加之系統(tǒng)實(shí)際測(cè)試時(shí)間較短,很可能無法完全準(zhǔn)確對(duì)實(shí)際使用效果進(jìn)行測(cè)試,在較短的實(shí)際測(cè)試中發(fā)現(xiàn)系統(tǒng)運(yùn)行較為穩(wěn)定,但隨著業(yè)務(wù)量的增加,代碼控制難度增加,系統(tǒng)的擴(kuò)展性、代碼的復(fù)用性和前后臺(tái)的代碼配合都受到了一定的限制,具體表現(xiàn)為:
1)由于時(shí)間有限,導(dǎo)致系統(tǒng)的可測(cè)試性較為差,無法保證系統(tǒng)功能的擴(kuò)展和代碼的復(fù)用,如果測(cè)試環(huán)境較為理想,測(cè)試效果會(huì)有較大提升。
2)VIEW STATE 和大量控件,使得系統(tǒng)變得有些臃腫緩慢,且在實(shí)際運(yùn)行中不能進(jìn)行很好的控制。
3)前臺(tái)展示效果如果想要做到更加人性化,就需要前臺(tái)腳本的大量支持,但是通過服務(wù)器控件所生成的代碼,難以被前臺(tái)腳本很好的控制。
基于實(shí)際測(cè)試中存在的上述問題,為了使得系統(tǒng)獲得更好的擴(kuò)展性,開發(fā)人員嘗試使用ASP.NET MVC6進(jìn)行重新開發(fā),選取系統(tǒng)的上崗資格證考試子系統(tǒng),它涵蓋了完整系統(tǒng)開發(fā)中的所有環(huán)節(jié)。重點(diǎn)對(duì)模型、視圖、控制器、過濾器、可測(cè)試性和應(yīng)用等方面的內(nèi)容進(jìn)行了重點(diǎn)關(guān)注。隨后對(duì)開發(fā)效果進(jìn)行了實(shí)時(shí)對(duì)比和評(píng)定,隨后的測(cè)試效果本文就不進(jìn)行一一描述,相對(duì)于之前的開發(fā),本次取得了較為滿意的效果。
6 結(jié)束語
ASP.NET MVC開發(fā)框架為企業(yè)的WEB應(yīng)用程序開發(fā)提供了一種新模式,使得ASP.NET應(yīng)用程序也能像Java企業(yè)應(yīng)用一樣具有清晰的結(jié)構(gòu)。降低了大型項(xiàng)目的管理復(fù)雜性,并且增強(qiáng)了項(xiàng)目的可測(cè)試性,不同開發(fā)人員可以在同一時(shí)間對(duì)不同項(xiàng)目進(jìn)行開發(fā),增強(qiáng)開發(fā)人員的項(xiàng)目并組開發(fā)能力,使得項(xiàng)目的實(shí)際開發(fā)效率獲得了提高。
參考文獻(xiàn):
[1] 方柯.基于 ASP.NET MVC 框架的 Web 應(yīng)用開發(fā)研究[D].上海:華東師范大學(xué),2011.
[2] 黃東連.基于ASP.NET MVC框架的Web開發(fā)研究[J].河南科技,2015(7).
[3] 羅建兵.基于.NET MVC5基礎(chǔ)框架的公共體育課管理系統(tǒng)的研究和開發(fā)[D]. 重慶:重慶大學(xué),2015.