提 要:網(wǎng)站應(yīng)用開(kāi)發(fā)技術(shù)中最常用的技術(shù)是MVC,Microsoft公司的ASP.NET平臺(tái)上推出MVC框架技術(shù),大大提高了網(wǎng)站程序開(kāi)發(fā)的速度,目前ASP.NET MVC框架已經(jīng)成為網(wǎng)站開(kāi)發(fā)重要的工具。
關(guān)鍵詞:MVC;網(wǎng)站開(kāi)發(fā);ASP.NET
中圖分類(lèi)號(hào):TP311.52
1 ASP.NET MVC發(fā)展
早期提出的MVC是一種架構(gòu)模式,MVC并不是指設(shè)計(jì)模式,MVC主要用來(lái)描述應(yīng)用程序的整體結(jié)構(gòu)及MVC各部分信息交互的方式。早期提出MVC模式的是Trygve Reenskaug,主要為程序語(yǔ)言Smalltalk發(fā)明的一種軟件設(shè)計(jì)的模式。MVC主要用來(lái)實(shí)現(xiàn)動(dòng)態(tài)程序設(shè)計(jì),從而簡(jiǎn)化日后的程序修改和升級(jí)操作,同時(shí)可以將程序中部分功能重復(fù)使用。MVC可以將復(fù)雜的程序簡(jiǎn)化,程序結(jié)構(gòu)更加直觀,現(xiàn)在MVC框架模式有很多版本,最常見(jiàn)的框架模式有Struts,Spring,Hibernate,ASP.NET MVC等。
Microsoft公司的ASP.NET MVC框架是以MVC模式為基礎(chǔ)的網(wǎng)站應(yīng)用程序框架,它為程序開(kāi)發(fā)人員提供了一項(xiàng)快速開(kāi)發(fā)網(wǎng)站框架設(shè)計(jì)模式,MVC可以實(shí)現(xiàn)程序和界面分離,主要體現(xiàn)在分離任務(wù),主要包括輸入邏輯,業(yè)務(wù)邏輯,顯示邏輯分開(kāi),這樣設(shè)計(jì)易于測(cè)試,并支持測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。它是可以擴(kuò)展簡(jiǎn)便的框架,程序員可以自定義視圖引擎,UrlRouting規(guī)則和重載Action方法等。程序開(kāi)發(fā)人員可使用ASP.NET所提供的頁(yè)面標(biāo)記,模板頁(yè)和用戶(hù)控件等開(kāi)發(fā)網(wǎng)站程序。
在ASP.NET1中使用的codebehind技術(shù),實(shí)現(xiàn)了界面aspx文件和代碼cs文件分離,也就是一種MVC設(shè)計(jì)。而ASP.NET2.0中使用codebeside技術(shù),主要實(shí)現(xiàn)一個(gè)視圖aspx文件可以關(guān)聯(lián)多個(gè)cs文件。在ASP.NET3.5中MVC框架功能進(jìn)一步增強(qiáng)。程序員可以使用UrlRouting技術(shù)實(shí)現(xiàn)網(wǎng)站程序url指向某個(gè)controller等。ASP.NET3.5需要安裝ASP.NET MVC 2后,才能實(shí)現(xiàn)ASP.NET MVC應(yīng)用程序開(kāi)發(fā)。在ASP.NET4中自帶ASP.NET MVC 2,在ASP.NET4之后的ASP.NET版本中不需要安裝ASP.NET MVC 2,它是ASP.NET的一個(gè)內(nèi)置組件,這樣設(shè)計(jì)可以方便程序開(kāi)發(fā),提高程序開(kāi)發(fā)的效率。
2 ASP.NET MVC框架
2.1 MVC框架由模型,視圖,控制器組成,是網(wǎng)站開(kāi)發(fā)程序員非常熟悉的一種開(kāi)發(fā)設(shè)計(jì)框架,將業(yè)務(wù)邏輯,數(shù)據(jù)和界面顯示分離,使程序開(kāi)發(fā)和維護(hù)更加方便快捷,可以提高程序開(kāi)發(fā)效率。
模型是對(duì)數(shù)據(jù)的加工,業(yè)務(wù)流程的處理,所有的網(wǎng)站程序都顯示數(shù)據(jù),數(shù)據(jù)存放的位置可以是磁盤(pán)文件,也可以存放在數(shù)據(jù)中,還可以存放在內(nèi)存中,模型是相對(duì)數(shù)據(jù)的一個(gè)抽象概念,網(wǎng)站中數(shù)據(jù)不管是以哪種形式存放,網(wǎng)站都可以通過(guò)模型來(lái)操作數(shù)據(jù)。在網(wǎng)站程序設(shè)計(jì)時(shí)通常把數(shù)據(jù)的實(shí)體類(lèi)看做一個(gè)模型,比如新聞發(fā)布系統(tǒng)中,新聞信息通常是存儲(chǔ)在數(shù)據(jù)庫(kù)中的,在數(shù)據(jù)庫(kù)中用一個(gè)新聞表new來(lái)存放信息,在網(wǎng)站程序中會(huì)創(chuàng)建一個(gè)數(shù)據(jù)類(lèi)new來(lái)與數(shù)據(jù)庫(kù)中新聞表相對(duì)應(yīng),這個(gè)類(lèi)就是新聞表的模型。模型是一個(gè)獨(dú)立的功能模塊,通過(guò)一個(gè)模型程序模塊可以為多個(gè)視圖提供數(shù)據(jù),設(shè)計(jì)完成的模型可以被多個(gè)視圖復(fù)用,從而提高了代碼的重用性。
視圖是顯示給用戶(hù)的界面,視圖界面中數(shù)據(jù)來(lái)自于模型,視圖數(shù)據(jù)更新由控制器來(lái)實(shí)現(xiàn),視圖只顯示數(shù)據(jù)不提供業(yè)務(wù)邏輯處理功能。例如用戶(hù)可以通過(guò)視圖來(lái)查看模型中定義的數(shù)據(jù),用戶(hù)還可以通過(guò)視圖來(lái)操作數(shù)據(jù)信息,使用模型將數(shù)據(jù)信息操作的結(jié)果顯示給用戶(hù)。在windows桌面系統(tǒng)中,視圖可以是一個(gè)或多個(gè)窗體。在網(wǎng)站程序中的視圖是aspx文件,每個(gè)aspx文件是一個(gè)網(wǎng)頁(yè)的視圖界面。
控制器接受用戶(hù)的輸入信息并調(diào)用模型和視圖完成用戶(hù)的需求,當(dāng)用戶(hù)單擊網(wǎng)頁(yè)超級(jí)鏈接或發(fā)送HTML表單時(shí),控制器不會(huì)輸入任何信息,控制器只接收請(qǐng)求,決定調(diào)用哪個(gè)模型處理請(qǐng)求,最后再確定用哪個(gè)視圖返回?cái)?shù)據(jù)信息。例如用戶(hù)通過(guò)視圖發(fā)布一個(gè)新聞信息命令給控制器,控制器將按程序的設(shè)計(jì)更新模型中定義的數(shù)據(jù)信息,最后將結(jié)果以視圖的形式顯示給用戶(hù)。
2.2 ASP.NET MVC框架提供了一個(gè)可以代替WebForm的框架模式。WebForm主要是由aspx文件和aspx.cs文件組成,WebForm可以將HTML接口與業(yè)務(wù)邏輯分開(kāi),它具有豐富的服務(wù)器控件可供程序員使用,加快了程序的開(kāi)發(fā)速度,它提供數(shù)據(jù)做定技術(shù),簡(jiǎn)化了程序與數(shù)據(jù)庫(kù)之間的操作,它還可以使用用戶(hù)控件和第三方控件技術(shù),提高了程序的可擴(kuò)展性。但WebForm頁(yè)面生命周期比較復(fù)雜,增加了程序調(diào)試復(fù)雜程度,在程序開(kāi)發(fā)過(guò)程中可能存在過(guò)度封裝,從而影響程序的運(yùn)行速度。
ASP.NET MVC優(yōu)點(diǎn)是將復(fù)雜的網(wǎng)站程序分為模型,視圖和控制器,這樣就使復(fù)雜程序開(kāi)發(fā)更加容易維護(hù),減少了程序之間的耦合。不使用ViewState和服務(wù)器表單控件,可以完成控制網(wǎng)站程序。它可以更加方便的與Jquery整合,實(shí)現(xiàn)Ajax技術(shù),實(shí)現(xiàn)無(wú)刷新更新頁(yè)頁(yè)比較容易,從而及大的提高了程序的開(kāi)發(fā)進(jìn)程。
2.3 ASP.NET MVC網(wǎng)站程序設(shè)計(jì)目錄結(jié)構(gòu)。使用asp.net新建MVC Web Application應(yīng)用程序,在目錄結(jié)構(gòu)中文件夾Models,Views,Controllers分別對(duì)應(yīng)MVC中模型,視圖,控制器。Models文件夾存放業(yè)務(wù)邏輯的類(lèi)文件。Views文件夾存放.aspx頁(yè)面,為用戶(hù)提供視圖顯示。Controllers文件夾存放處理客戶(hù)請(qǐng)求類(lèi)文件。
3 ASP.NET MVC實(shí)例設(shè)計(jì)
通過(guò)信息發(fā)布系統(tǒng)網(wǎng)站應(yīng)用程序設(shè)計(jì)來(lái)展示ASP.NET MVC框架設(shè)計(jì)方法,信息發(fā)布系統(tǒng)主要包括三項(xiàng)功能分別是信息查看,信息修改,信息添加,數(shù)據(jù)庫(kù)設(shè)計(jì)使用的是SQL Server,先建立news數(shù)據(jù)庫(kù)用來(lái)存儲(chǔ)信息id,信息標(biāo)題,信息內(nèi)容,信息發(fā)布時(shí)間。
3.1 模型的設(shè)計(jì)。在asp.net網(wǎng)站項(xiàng)目中的model文件夾中定義一個(gè)關(guān)系對(duì)象類(lèi)LINQ TO SQL,類(lèi)文件名稱(chēng)為news.dbml,然后將數(shù)據(jù)這庫(kù)中的表news映射為news 類(lèi),這樣使用LINQ TO SQL類(lèi)就可以完成對(duì)數(shù)據(jù)庫(kù)中信息的操作了,再定義一個(gè)newsReposit類(lèi),主要功能實(shí)現(xiàn)信息的添加,查詢(xún),刪除和修改等操作。操作過(guò)程如下,先添加news表的O/R映射生成對(duì)應(yīng)的實(shí)體類(lèi),打開(kāi)asp.net在“解決方案管理器”中找到項(xiàng)目?jī)?nèi)的model文件夾,在model上“右鍵”,選擇“添加”中的“新建項(xiàng)”,在彈出窗口中選擇“LINQ TO SQL類(lèi)”,名稱(chēng)“news.dbml”,選擇“添加”按鈕。然后建立類(lèi)和數(shù)據(jù)庫(kù)的映射,在服務(wù)器資料管理器上“右鍵”點(diǎn)“數(shù)據(jù)連接”,選擇“添加連接”,選擇對(duì)應(yīng)的“數(shù)據(jù)庫(kù)服務(wù)器”和“數(shù)據(jù)庫(kù)”,再選擇“確定”按鈕。在打開(kāi)的數(shù)據(jù)庫(kù)中找到news表,按“左鍵”將表移動(dòng)到右側(cè)窗口中,“保存”完成映射。
3.2 控制器的設(shè)計(jì)。在asp.net網(wǎng)站項(xiàng)目中的controllers文件夾中定義newsContro類(lèi),主要功能實(shí)現(xiàn)對(duì)用戶(hù)發(fā)出的請(qǐng)求進(jìn)行處理,再將處理完成的信息選擇相應(yīng)的視圖顯示給用戶(hù)。
3.3 視圖的設(shè)計(jì)。在asp.net網(wǎng)站項(xiàng)目中的views文件夾中建立new文件夾,將視圖文件存放在new文件夾中,主要視圖文件有add.aspx添加信息視圖,edit.aspx修改信息視圖,default.aspx顯示信息視圖,error.aspx操作錯(cuò)誤提示信息視圖,del.aspx刪除信息視圖。
4 結(jié)束語(yǔ)
ASP.NET MVC框架在.NET平臺(tái)下使用,實(shí)現(xiàn)軟件開(kāi)發(fā)的代碼和界面分離設(shè)計(jì),界面設(shè)計(jì)員完成視圖開(kāi)發(fā),程序設(shè)計(jì)員完成模型開(kāi)發(fā),從而提高了網(wǎng)站開(kāi)發(fā)效率。
參考文獻(xiàn):
[1]董寧.ASP.NET MVC程序開(kāi)發(fā)[M].北京:人民郵電出版社,2014.
[2]黃保翕.ASP.NET MVC 4開(kāi)發(fā)指南[M].北京:清華大學(xué)出版社,2013.
[3]巴勒莫(美).ASP.NET MVC 4實(shí)戰(zhàn)[M].北京:水利水電出版社,2014.
作者簡(jiǎn)介:張志剛(1978-),男,吉林人,教師,助教,碩士,研究方向:軟件工程。
作者單位:長(zhǎng)春大學(xué)旅游學(xué)院,長(zhǎng)春 130607