国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ASP.NET MVC軟件架構(gòu)模式在學(xué)生實訓(xùn)管理系統(tǒng)的應(yīng)用

2015-01-29 02:57丁春莉
電子設(shè)計工程 2015年13期
關(guān)鍵詞:視圖應(yīng)用程序管理系統(tǒng)

陳 輝,丁春莉,孫 悅

(陜西交通職業(yè)技術(shù)學(xué)院 陜西 西安 7100180)

軟件架構(gòu)模式[1](Design pattern)是一套比較通用的軟件開發(fā)流程和代碼編寫規(guī)范,也是很多編程設(shè)計人員的代碼設(shè)計經(jīng)驗總結(jié)。使用軟件架構(gòu)模式的目的是為了有效的組織程序架構(gòu),提高代碼的可重用性、保證代碼可靠性。

目前有多種軟件構(gòu)建模式被開發(fā)者使用,例如三層框架模式、Struts模式和MVC開發(fā)模式,其中MVC開發(fā)模式是Trygve Reenskaug提出的一種開發(fā)模式,最早出現(xiàn)在Smalltalk中,后來普遍用于Java開發(fā)中,近年來基于Java的Web開發(fā)中的主流開發(fā)模式都是基于MVC的軟件架構(gòu)模式。在Java的開源框架中,著名的Struts架構(gòu)就是MVC模式典型應(yīng)用。由于MVC軟件架構(gòu)模式的優(yōu)秀特性,微軟也在VS2008的ASP.NET的開發(fā)中開始支持ASP.NET MVC開發(fā)模式,該模式是ASP.NET WebForms后的又一種開發(fā)方式。它提供了一系列優(yōu)秀特性,使ASP.NET開發(fā)人員擁有了另一個選擇。

在.NET平臺下的ASP.NET MVC解決方案,不但具備ASP.NET的易用性,而且也繼承了MVC的優(yōu)秀架構(gòu),大大降低了開發(fā)復(fù)雜度,JavaWeb開發(fā)框架Struts要更直觀,更容易上手。也對Ajax技術(shù)有更好的支持[2]。

ASP.NET MVC要優(yōu)于Java平臺上的Struts和Struts2。使用Struts實現(xiàn)MVC時,除了要寫一堆ActionForm、Action和ActionResult外,還需要進(jìn)行各種復(fù)雜的xml映射配置文件。Struts2雖然不用再寫ActionForm,并且降低了侵入度 (其實Struts2和Struts關(guān)系不大,而基本可以認(rèn)為是WebWork的后續(xù)版本),但是仍無法避免xml配置文件。

微軟提出的.NET框架,是基于微軟開發(fā)集成工具Visual Stdio中應(yīng)用的開發(fā)架構(gòu),可以只用在微軟的主流開發(fā)語言C#、J#、VB等中??梢员容^方便跨平臺移植,具有較高的開發(fā)效率、部署簡單及支持軟件自動更新等特點(diǎn),逐漸成為各類系統(tǒng)開發(fā)工具的首選[3]。我院開發(fā)學(xué)生實訓(xùn)管理系統(tǒng)系統(tǒng)中應(yīng)用了MVC開發(fā)技術(shù),重復(fù)的利用這種技術(shù)的分層開發(fā)的特點(diǎn),開發(fā)小組分工合作,開發(fā)效率較以往項目提高了30%以上。并且開發(fā)完成的項目的代碼質(zhì)量較高,軟件也具有較好的健壯性。

1 MVC軟件架構(gòu)模式

MVC(Model-View-Controller,模型—視圖—控制器模式)用于表示一種軟件架構(gòu)模式。它把軟件系統(tǒng)分為3個基本部分:模型(Model),視圖(View)和控制器(Controller),基本結(jié)構(gòu)如圖 1所示。

圖1 MVC模型的基本結(jié)構(gòu)Fig.1 Basic structure of the MVCmodel

MVC框架組件的基本功能如下[4]:

1)模型對象的部分應(yīng)用程序?qū)崿F(xiàn)的邏輯應(yīng)用程序的數(shù)據(jù)域,封裝應(yīng)用程序狀態(tài),并呈現(xiàn)應(yīng)用程序的功能。通常,模型對象檢索和模型狀態(tài)存儲在一個數(shù)據(jù)庫中。例如,一個產(chǎn)品對象可能會從數(shù)據(jù)庫中檢索信息,操作它,然后寫回產(chǎn)品的更新信息表在SQL Server數(shù)據(jù)庫。

2)視圖是顯示的組件應(yīng)用程序的用戶界面(UI)。視圖通??梢员硎灸P停⑶铱梢韵蚩刂破靼l(fā)送用戶的輸入,允許控制器選擇不同的視圖進(jìn)行操作。通常,這個UI創(chuàng)建從模型數(shù)據(jù)。 一個例子將是一個產(chǎn)品表的編輯視圖顯示文本框,下拉列表,根據(jù)當(dāng)前狀態(tài)的復(fù)選框產(chǎn)品對象。

3)控制器的組件處理用戶交互,使用模型,并最終選擇一個視圖顯示UI的呈現(xiàn)。 在MVC應(yīng)用程序中,視圖只顯示信息;控制器處理和響應(yīng)用戶輸入和交互。例如,控制器處理query-string值,并將這些值傳遞給模型,進(jìn)而可能使用這些值來查詢數(shù)據(jù)庫。

MVC模式可以幫助您創(chuàng)建單獨(dú)的應(yīng)用程序應(yīng)用程序的不同方面(輸入邏輯、業(yè)務(wù)邏輯和UI邏輯),同時提供這些元素之間的松散耦合。3個主要組件之間的松散耦合的MVC應(yīng)用程序也促進(jìn)并行開發(fā)。

采用MVC的軟件設(shè)計模式的目的是關(guān)注點(diǎn)分離,不同的開發(fā)人員可以專注于架構(gòu)中的不同位置,例如,一個開發(fā)人員可以在視圖中,第二個開發(fā)人員可以使用控制器邏輯,和第三個開發(fā)人員可以專注于業(yè)務(wù)邏輯的模型。MVC架構(gòu)主要的優(yōu)點(diǎn)集中在以下幾個方面[5-6]:

首先,采用這種模式可以將數(shù)據(jù)與業(yè)務(wù)邏輯從界面層中分離出來,多個視圖可以同時共享一個模型,這樣可以極大提高代碼的重用,提高編程的效率。在開發(fā)中可以更好的進(jìn)行分工,有利于提高軟件的開發(fā)質(zhì)量。

第二,在視圖和控制器中封裝的業(yè)務(wù)邏輯,與具體的底層數(shù)據(jù)庫沒有直接的關(guān)聯(lián),只有模型層封裝了對具體數(shù)據(jù)庫訪問的邏輯,如果進(jìn)行數(shù)據(jù)庫移植就,就只要改變模型中具體的訪問代碼,無需改變視圖和控制器,因此可以提高程序的可維護(hù)性。

2 學(xué)生實訓(xùn)管理系統(tǒng)的軟件構(gòu)架和系統(tǒng)設(shè)計

在學(xué)生實訓(xùn)管理系統(tǒng)是一個基于B/S結(jié)構(gòu)的WEB應(yīng)用程序,主要功能是對學(xué)生上機(jī)實訓(xùn)的作業(yè)發(fā)布管理、作業(yè)提交管理、作業(yè)考評管理、考勤管理、在線考試管理等功能。該應(yīng)用開發(fā)的目標(biāo)主要是為了在實訓(xùn)機(jī)房中系統(tǒng)地管理實訓(xùn)整個過程,改變以往教師每次布置作業(yè)后學(xué)生完成練習(xí)后提交作業(yè),這樣的過程相互不關(guān)聯(lián),沒有系統(tǒng)管理的過程,不能很好地評估一門課程在整個學(xué)期中實訓(xùn)的情況(包括學(xué)生實訓(xùn)考勤、教師的布置的上機(jī)任務(wù)和學(xué)生的上機(jī)提交作業(yè)等等)。整個系統(tǒng)采用基于MVC4框架的ASP.NET進(jìn)行開發(fā),開發(fā)環(huán)境采用Visual Studio 2010,后臺數(shù)據(jù)庫使用SQL Sever2005。系統(tǒng)的軟件構(gòu)架如圖2所示。

圖2 學(xué)生實訓(xùn)管理系統(tǒng)的軟件架構(gòu)Fig.2 Students practice management system software architecture

在學(xué)生實訓(xùn)管理系統(tǒng)軟件設(shè)計中,采用MVC構(gòu)架進(jìn)行系統(tǒng)設(shè)計,首先進(jìn)行系統(tǒng)分析,設(shè)計的步驟是從底層開始,首先設(shè)計是完成數(shù)據(jù)訪問設(shè)計,在此基礎(chǔ)上進(jìn)行模型的設(shè)計和實現(xiàn),然后以此為基礎(chǔ)設(shè)計控制器,最后完成視圖的設(shè)計。系統(tǒng)的功能模塊如圖3所示。

圖3 系統(tǒng)功能模塊圖Fig.3 System functional block diagram

根據(jù)系統(tǒng)功能需求分析,劃分了相應(yīng)的系統(tǒng)功能模塊,在vs2010中使用ASP.NET MVC4框架創(chuàng)建WEB應(yīng)用程序進(jìn)行開發(fā),系統(tǒng)框架物理結(jié)構(gòu)圖如4所示。

3 MVC系統(tǒng)架構(gòu)實現(xiàn)

3.1 Model實現(xiàn)

Model對象表示實體類,在ASP.NET MVC框架中,模型是負(fù)責(zé)應(yīng)用程序或業(yè)務(wù)邏輯的應(yīng)用部件,模型類并不直接處理HTTP的請求,也不生成HTTP的輸出,模型通常是使用數(shù)據(jù)庫訪問類獲取所需要的數(shù)據(jù),并對數(shù)據(jù)根據(jù)需要執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,并將數(shù)據(jù)提交給控制器[7]。

在學(xué)生實訓(xùn)管理系統(tǒng)開發(fā)中,首先創(chuàng)建模型類的抽象基類Entity,在Entity中封裝了數(shù)據(jù)庫訪問的代碼,主要的模型類包括:

圖4 系統(tǒng)框架物理結(jié)構(gòu)圖Fig.4 System framework of physics charts

1)學(xué)生(Student)

2)教師(Teacher)

3)實訓(xùn)作業(yè)對象(TrainWork)

4)實訓(xùn)考試試卷(TrainPaper)

5)學(xué)生成績(StudentScore)

這些模型類與數(shù)據(jù)庫的表相對應(yīng)。主要用來對數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)表進(jìn)行操作?;緮?shù)據(jù)庫操作包括數(shù)據(jù)庫表的增、刪、改、查操作,在Entity類中添加4個抽象方法,模型類實現(xiàn)Entity抽象類的虛擬方法。對具體的數(shù)據(jù)表進(jìn)行操作。

3.2 控制器的實現(xiàn)

控制器是程序的中樞,在程序中連接模型和視圖,起到承上啟下的作用,復(fù)制對用戶的輸入進(jìn)行響應(yīng),根據(jù)用戶的不同輸入,執(zhí)行相應(yīng)的行為,調(diào)研模型中的業(yè)務(wù)邏輯代碼,最后將結(jié)果返回給用戶,控制器主要是復(fù)制數(shù)據(jù)的傳送,根據(jù)業(yè)務(wù)邏輯的執(zhí)行結(jié)果,決定轉(zhuǎn)向不同的視圖,給用戶呈現(xiàn)不同的結(jié)果[8]。

根據(jù)程序的功能,需要對控制器進(jìn)行規(guī)劃設(shè)計。本程序中包括用戶登陸、作業(yè)發(fā)布、作業(yè)提交、成績發(fā)布、在線考試等模塊,每個模塊需要一個控制器類,在類中實現(xiàn)該模塊所需的控制器方法。以作業(yè)發(fā)布模塊控制器為例,設(shè)計如下:

將控制器和Action的框架設(shè)計以后,有助于了解網(wǎng)站與用戶的交互,控制器與視圖之間的信息傳遞。完成控制器和模型的設(shè)計之后,就可以進(jìn)行設(shè)計的設(shè)計。

3.3 視圖的實現(xiàn)

視圖的作用是提供一個數(shù)據(jù)顯示和與用戶交互的窗口,在MVC中可以使用Action創(chuàng)建視圖頁面,通透Visual Studio中的“新增視圖”功能,可以創(chuàng)建HTML頁面。以這樣的HTML頁面為基礎(chǔ)進(jìn)行后續(xù)的開發(fā),可以簡化頁面編寫的工作。

在設(shè)計視圖之前,通常需要設(shè)計母版頁面,這種母版頁面是一個模板,在頁面中通常添加一些在網(wǎng)站中某一類頁面共有的一些要素,例如LOGO,版權(quán)信息等等。在實訓(xùn)管理系統(tǒng)的作業(yè)瀏覽控制器WorkPubController中,包含Index、WorkList、WorkDetail 3 個 Action,每個 Action 中,控制器的作用是定位并執(zhí)行Action方法,并確保它能正確執(zhí)行;獲取Action方法所需的參數(shù)并傳遞給它;捕獲Action方法執(zhí)行期間出現(xiàn)的錯誤;提供“WebFormViewFactory”類以便生成ASP.NET頁面類型的視圖。每個Action方法對應(yīng)一個視圖,使用VS2010可以自動創(chuàng)建Action對應(yīng)的視圖。例如,在本項目中,創(chuàng)建的TrainWorkDetail視圖,采用實訓(xùn)作業(yè)對象(TrainWork)模型創(chuàng)建強(qiáng)類型視圖,將傳遞TrainWork對象給視圖模板作為它的模型類。

本項目采用在MVC4中的Razor引擎創(chuàng)建視圖,Razor的兩大主要功能是模板文件和動態(tài)編譯器。ASPX的視圖引擎依靠<%和%>來調(diào)用C#指令。而MVC3以后有了一套新的使用@標(biāo)記的Razor語法,使用起來更靈活更簡潔。 Razor引擎語法設(shè)計如下:

使用使用MVC模式進(jìn)行系統(tǒng)開發(fā),最大的優(yōu)點(diǎn)就是便于團(tuán)隊開發(fā)和良好的重用性,例如在系統(tǒng)設(shè)計中開始設(shè)計了實訓(xùn)作業(yè)瀏覽視圖,在后期根據(jù)需要,可以顯示指定日期段的實訓(xùn)作業(yè)視圖,其中模型類和初始視圖不需要進(jìn)行修改,只要增加一個新的指定日期段的實訓(xùn)作業(yè)視圖就可以實現(xiàn)新的額功能。在這種模式下,視圖、控制器和模型之間的關(guān)系示意圖如圖5所示。

圖5 視圖、控制器和模型之間的關(guān)系示意圖Fig.5 View,controller and model schematic diagram

4 結(jié)論

通過在學(xué)生實訓(xùn)管理系統(tǒng)ASP.Net平臺的MVC設(shè)計模式,開發(fā)小組深刻的體會到了這種開發(fā)模式相比較普通三層開發(fā)模式的優(yōu)越性,特別是對合作開發(fā)的便捷性是其他開發(fā)模式不能比擬的。目前學(xué)生實訓(xùn)管理系統(tǒng)已經(jīng)在我院的實訓(xùn)室應(yīng)用了一個學(xué)期,使用效果良好,深受實訓(xùn)教師的好評,通過本項目的開發(fā),開發(fā)小組也深刻的理解了這種開發(fā)模式的優(yōu)越性,為今后的系統(tǒng)開發(fā)提供了良好的借鑒。

[1]甄鐳.NET與設(shè)計模式[M].北京:電子工業(yè)出版社,2005.

[2]倪芳.基于MVC的電子商務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D].廈門:廈門大學(xué),2014

[3]曹國民,陳根才,施文幸.基于.NET平臺的電力生產(chǎn)管理系統(tǒng)建模與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2008,29(1):170-172.CAOGuo-min,CHEN Gen-cai,SHI Wen-xing.Based on the.NET platform modeling and realization of electric power management system [J].Computer engineering and design,2008,29(1):170-172.

[4]黃保翕.ASP.NET MVC4開發(fā)指南[M].北京:清華大學(xué)出版社,2013.

[5]劉亮,霍劍青,郭玉剛,等.基于MVC的通用型模式的設(shè)計與實現(xiàn)[J].中國科學(xué)技術(shù)大學(xué)學(xué)報,2010,40(6):635-640.LIU Liang,HUO Jian-qing,GUO Yu-gang,et al.MVC-based design and implementation of general purpose pattern[J].Journal of China University of science and technology,2010,40(6):635-640.

[6]莫勇騰.深入淺出設(shè)計模式[M].北京:清華大學(xué)出版社,2006.

[7]伍海波,匡靜,朱承學(xué),等.基于MVC的教學(xué)資源管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展,2014,24(7):214-217.WU Hai-bo,KUANG Jing,ZHU Cheng-xue,et al.Teaching resources management system based on MVC design and implementation[J].Computer Technology and Development,2014,24(7):214-217.

[8] 候捷,陳碩.Stanley B.lippman.C#Primer(中文 版)[M].武漢:華中科技大學(xué)出版社,2003.

猜你喜歡
視圖應(yīng)用程序管理系統(tǒng)
基于James的院內(nèi)郵件管理系統(tǒng)的實現(xiàn)
刪除Win10中自帶的應(yīng)用程序
谷歌禁止加密貨幣應(yīng)用程序
基于LED聯(lián)動顯示的違停管理系統(tǒng)
5.3 視圖與投影
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
海盾壓載水管理系統(tǒng)
基于RFID的倉儲管理系統(tǒng)實現(xiàn)