999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MVC框架在ASP.NET中的應(yīng)用研究與實踐

2021-01-20 00:54:30黃玉春
商丘師范學(xué)院學(xué)報 2021年3期
關(guān)鍵詞:頁面用戶模型

黃玉春

(安徽工業(yè)職業(yè)技術(shù)學(xué)院 信息工程系,安徽 銅陵 244000)

近年來,越來越多的ASP.NET開發(fā)人員開始接觸MVC框架,開始大都認(rèn)為MVC與ASP.NET完全沒有關(guān)系,是一個全新的Web開發(fā),而事實上MVC是一種更高級架構(gòu)體系.原來的ASP.NET稱為 ASP.NET WebForms,新的MVC 稱為ASP.NET MVC.

ASP.NET是微軟推出的基于 .NET Framework的Web開發(fā)平臺,目前最新的版本是ASP.NET Core(也被稱為 ASP.NET 5),是一個開源跨平臺的開發(fā)框架,用于構(gòu)建基于云的現(xiàn)代 Web 應(yīng)用 .它是從底層開始重新構(gòu)建來提供性能優(yōu)良的Web應(yīng)用開發(fā)框架,可以部署在云上或者本地服務(wù)器上.ASP.NET Core實現(xiàn)了真正的跨平臺,用戶可以很容易的在Windows,Mac或者Linux上開發(fā)和部署Web應(yīng)用,可以在云上部署和調(diào)試Web應(yīng)用.

但在開發(fā)B/S結(jié)構(gòu)的Web應(yīng)用過程中,有一些開發(fā)人員往往采用Web Forms開發(fā)模式,該模式是一種事件驅(qū)動模型,將業(yè)務(wù)邏輯和頁面顯示混合在一起,該模式不利于分工與協(xié)作,而且在業(yè)務(wù)邏輯中采用內(nèi)嵌SQL語句的方式完成數(shù)據(jù)訪問,一旦數(shù)據(jù)庫或者類定義中一方發(fā)生變化,就會導(dǎo)致Web應(yīng)用系統(tǒng)的大量修改,不利于系統(tǒng)的維護(hù).

針對上述不足,對ASP.NET Core框架中的MVC開發(fā)框架進(jìn)行探索,并通過一個實例來說明ASP.NET MVC的應(yīng)用.

1 ASP.NET Web Forms

1.1 Web Forms簡介

Web Forms 是傳統(tǒng)的基于事件驅(qū)動的 ASP.NET 模式.它整合了 HTML、服務(wù)器控件、服務(wù)器事件和服務(wù)器代碼的網(wǎng)頁.在Visual Studio開發(fā)環(huán)境中,開發(fā)人員通過拖拽UI元素生成前臺頁面,在后臺編寫操作這些UI元素的邏輯代碼的方式開發(fā)Web Forms應(yīng)用程序.

Web Forms 請求流程如圖1所示.

ASP.NET Web Forms的HTTP請求處理過程是比較復(fù)雜的,但一般可以理解為經(jīng)過以下幾個步驟:

(1)瀏覽器發(fā)送http請求.

(2)轉(zhuǎn)交請求(把請求交給.NET FrameWork進(jìn)行處理.)

(3)創(chuàng)建頁面類對象,返回給瀏覽器.

(4)瀏覽器解析html代碼,生成網(wǎng)頁.

1.2 Web Forms的優(yōu)點

(1)有大量服務(wù)器控件支持,除了有用于設(shè)計界面和輸入驗證的Web控件外,還有GridView、DataList、Repeater等控件可以方便地進(jìn)行數(shù)據(jù)綁定,從而減少了大量代碼的編寫.

(2)采用事件驅(qū)動模式來控制應(yīng)用程序請求,如:Click事件等,aspx和cs文件分離,即顯示邏輯和處理邏輯分離.

(3)支持視圖狀態(tài),即通過ViewStates自動保存Post返回的狀態(tài),每個控件以“隱藏域”的形式存在當(dāng)前表單頁面未達(dá)到“有狀態(tài)”.

1.3 Web Forms的缺點

(1)由于使用的ViewState會增加頁面的大小(一般會增加兩倍字節(jié)),造成性能不高,消耗大量帶寬.

(2)Web Forms加載時間明顯比MVC加載時間要長,大約是MVC加載時間的兩倍.

(3) 因為采用code-behind 代碼后置技術(shù),每個aspx文件都包含.aspx和.aspx.cs兩個文件,緊密耦合度太高.

(4)因為緊密耦合度太高、使用大量的事件處理函數(shù),不利于單元測試.

2 ASP.NET MVC

后臺代碼和服務(wù)器控件是ASP.NET Web Forms一切問題的根源.MVC是一種使用Model View Controller(模型-視圖-控制器)設(shè)計創(chuàng)建Web應(yīng)用程序模式,微軟公司于2009年正式發(fā)布ASP.NET MVC.Controller中包含后臺代碼邏輯,View是ASPX,如純HTML代碼,Model是中間層.這三部分的關(guān)系如圖2所示.

圖1 WebForms頁面的運行示意圖

圖2 ASP.NET Web Forms三層體系結(jié)構(gòu)與MVC對應(yīng)關(guān)系

通過研究可以發(fā)現(xiàn)MVC的改變有兩點.一是View變成簡單的HTML代碼,二是后臺代碼移到簡單的.NET類中,稱為控制器.

ASP.NET MVC 請求流的通用步驟是:首先獲取控制器.其次依賴行為(Action)控制器創(chuàng)建Model對象,Model通過轉(zhuǎn)換調(diào)用數(shù)據(jù)訪問層.最后數(shù)據(jù)填充Model之后,傳遞到View 顯示層,實現(xiàn)數(shù)據(jù)的顯示.

2.1 MVC介紹

MVC由三大核心模塊組成:模型(Model),視圖(View)和控制器(Controller);其中,Model負(fù)責(zé)數(shù)據(jù)處理,是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分;View負(fù)責(zé)視圖呈現(xiàn),是應(yīng)用程序中處理數(shù)據(jù)顯示的部分;Controller負(fù)責(zé)處理視圖和模型之間的邏輯,是應(yīng)用程序中處理用戶交互的部分,通常控制器從視圖讀取數(shù)據(jù)、控制用戶輸入,并向模型發(fā)送數(shù)據(jù).MVC大致流程如圖3所示.

模型(Model)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,是MVC設(shè)計的核心,它封裝了系統(tǒng)的核心流程和業(yè)務(wù)規(guī)則,通常模型對象在數(shù)據(jù)庫中存取數(shù)據(jù)和數(shù)據(jù)業(yè)務(wù)處理.

視圖(View)是Web應(yīng)用程序中處理數(shù)據(jù)顯示的部分,主要負(fù)責(zé)向用戶顯示相關(guān)數(shù)據(jù),并接受用戶的輸入數(shù)據(jù),但它并不實際處理這些數(shù)據(jù).通常從模型數(shù)據(jù)中創(chuàng)建視圖.一個視圖可以被多個控制器重用.

控制器(Controller)是應(yīng)用程序中處理用戶交互的部分,負(fù)責(zé)模型和視圖之間的同步,接受用戶從視圖輸入的數(shù)據(jù)并調(diào)用模型處理數(shù)據(jù),最后將處理結(jié)果返回到視圖.通常一個視圖具有一個控制器.

對于瀏覽器端的一個http請求,請求的是控制器的某一個Action方法,一般格式為:

http://localhost:8080/控制器名/方法名

控制器的Action方法接收后,服務(wù)器端存在一些判斷邏輯來處理這些請求,控制器用相應(yīng)的視圖呈現(xiàn)給用戶.

對于瀏覽器端用戶通過一組輸入控件和提交按鈕組成的HTML請求,首先也是被控制器接收,通過對應(yīng)的Action方法決定相應(yīng)的模型處理請求并返回數(shù)據(jù),最后控制器用相應(yīng)的視圖去格式化模型返回的數(shù)據(jù),并通過顯示頁面呈現(xiàn)給用戶.

模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖.如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化.因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會將變化通知所有的視圖,導(dǎo)致顯示的更新.這實際上是一種模型的變化-傳播機(jī)制.

2.2 MVC 的優(yōu)勢

MVC模式的出現(xiàn)不僅實現(xiàn)了功能模塊和顯示模塊的分離,同時它還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可重用性.MVC 的優(yōu)勢具體有以下幾點:

(1)耦合性低.視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼.同樣,一個應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動MVC的模型層即可.因為模型與控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則.

(2)重用性高.隨著互聯(lián)網(wǎng)技術(shù)的不斷進(jìn)步,應(yīng)用程序的訪問方式也越來越多.MVC模式允許多個視圖共享一個模型,因此允許使用各種不同樣式的視圖來訪問同一個服務(wù)器端的代碼,用戶可以通過電腦也可通過移動設(shè)備來訪問.MVC使開發(fā)和維護(hù)用戶接口的技術(shù)含量降低.

(3)可維護(hù)性高.視圖層和業(yè)務(wù)邏輯層的分離也使得Web應(yīng)用更易于維護(hù)和修改.例如,業(yè)務(wù)邏輯和修改視圖可以分別修改,相互獨自,互不干擾.分層最大的好處就是容易后期維護(hù)降低維護(hù)成本,和增加新的功能,提高代碼重用性,從而提高開發(fā)效率.

(4)不支持ViewState,這樣的頁面更加簡潔,可以提升程序的性能.

(5)有利軟件工程化管理.由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼.

2.3 MVC 的不足

MVC有以下不足之處:

(1)對 MVC 的準(zhǔn)確理解和把握并不是那么容易.運用 MVC 需要精心的計劃,由于它的內(nèi)部原理比較復(fù)雜,所以需要花費一些時間去思考.

(2)MVC增加了系統(tǒng)結(jié)構(gòu)的難度和實現(xiàn)的復(fù)雜性.對于簡單的界面,如果嚴(yán)格按照 MVC 設(shè)計模式,使模型、視圖與控制器分離,增加了結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的系統(tǒng)交互,降低運行效率.

(3)MVC 理論上要求視圖和控制器的分離,但實際中總會存在一定程度的聯(lián)系.視圖與控制器是相互分離的部件,但確實聯(lián)系緊密,視圖沒有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣也會妨礙了他們的獨立重用.

3 基于ASP.NET MVC系統(tǒng)開發(fā)實例分析

本例以某高校教師課堂教學(xué)網(wǎng)上評測系統(tǒng)為例.

3.1 系統(tǒng)需求分析與結(jié)構(gòu)設(shè)計

教師課堂教學(xué)是高等學(xué)校教學(xué)質(zhì)量保證的關(guān)鍵所在,建立科學(xué)、行之有效的課堂教學(xué)質(zhì)量評價體系是改善教學(xué)質(zhì)量的有效途徑.學(xué)院根據(jù)教育部印發(fā)的《高等職業(yè)院校內(nèi)部質(zhì)量保證體系診斷與改進(jìn)指導(dǎo)方案》,制定了學(xué)院教師課堂教學(xué)考核評教指標(biāo),教師課堂考核由學(xué)生通過網(wǎng)絡(luò)對教師課堂紀(jì)律、教學(xué)內(nèi)容、知識講解、語言表達(dá)等10個方面進(jìn)行評測打分.

該系統(tǒng)由學(xué)生測評模塊(前臺系統(tǒng))和管理員管理模塊(后臺系統(tǒng))兩部分組成.

前臺系統(tǒng),是學(xué)生通過手機(jī)登錄到評教頁面(也可以通過電腦登錄評教頁面,對應(yīng)的視圖也不一樣,對應(yīng)的業(yè)務(wù)邏輯是一樣的),對本班任課教師教學(xué)水平、教學(xué)效果進(jìn)行評價,教師可以通過手機(jī)登錄系統(tǒng)查看學(xué)生對自己的教學(xué)評價結(jié)果.后臺系統(tǒng),管理員通過電腦端對課程、任課教師、學(xué)生、班級等信息的維護(hù).各模塊的主要功能如圖4所示.

圖3 MVC模型結(jié)構(gòu)圖

圖4 系統(tǒng)主要功能模塊

3.2 模型層的設(shè)計

該系統(tǒng)使用SQL Server和EF(Entity Framework)創(chuàng)建相關(guān)的數(shù)據(jù)庫及數(shù)據(jù)庫訪問層.EF使用代碼優(yōu)先(Code Ffirst)的方法實現(xiàn)項目,類以及類之間的關(guān)系通過代碼創(chuàng)建,當(dāng)應(yīng)用程序首次執(zhí)行時,EF將在數(shù)據(jù)庫服務(wù)器中自動生成數(shù)據(jù)訪問層以及相應(yīng)的數(shù)據(jù)庫.

(1)創(chuàng)建連接字符串(ConnectionString)

在Web.Config 文件中< Configuration >標(biāo)簽中添加如下代碼:

name="xspjDB"

providerName="System.Data.SqlClient"/>

(2)添加EF引用.在vs2013中安裝Entity Framework框架.

(3)創(chuàng)建項目中所需實體類和DbContext類.(建立了學(xué)生類,其他類略)

public class Student

{

[DisplayName("編號")]

public int ID { get;set;}

[DisplayName("學(xué)號"),Required]

public string sCode { get;set;}

[DisplayName("姓名"),Required]

public string sName { get;set;}

[DisplayName("班級編號"),Required]

public string classID { get;set;}

[DisplayName("班級")]

public virtual Class Class { get;set;}

}

創(chuàng)建數(shù)據(jù)訪問層代碼:

public class XspjDB:DbContext

{

public DbSet Students

{get;set;}

public DbSet Teachers

{get;set;}

}

3.3 視圖層的實現(xiàn)

在Views 文件夾中創(chuàng)建與控制器同名的文件夾,在對應(yīng)的文件夾下創(chuàng)建視圖文件,視圖文件有html、aspx、cshtml等.本系統(tǒng)使用razor引擎視圖,擴(kuò)展名為cshtml,Razor 是一種標(biāo)記語法,用于將基于服務(wù)器的代碼嵌入網(wǎng)頁中.視圖頁使用HTML5、CSS3、JavaScript結(jié)合Bootstrap框架技術(shù).下面以系統(tǒng)常用的登錄模塊為例,登錄模塊視圖login.cshtml主要代碼如下:

@using(Html.BeginForm())

{

學(xué)生實習(xí)管理系統(tǒng)

@Html.TextBoxFor(m => m.UserName,new { @class = "form-control",placeholder = "Enter UserName" })

@Html.ValidationMessageFor(m => m.UserName)

@Html.PasswordFor(m => m.PassWord,new { @class = "form-control",placeholder = "Enter password" })

@Html.ValidationMessageFor(m => m.PassWord)

}

3.4 控制器實現(xiàn)

在該系統(tǒng)中,控制層的設(shè)計采用分散控制器的原則.頁面控制器捕獲每個視圖頁面中發(fā)生的事件和提交的數(shù)據(jù),并調(diào)用相應(yīng)模型來處理它們,最后決定視圖中的展現(xiàn)內(nèi)容和方式.

用戶管理控制器accountController處理登錄頁面的Action方法的代碼如下:

public ActionResult Login()

{

return View();

}

[HttpPost]//單擊登錄按鈕后,調(diào)用該方法

public ActionResult Login(User user)

{

var item = db.Users.FirstOrDefault(u => u.UserName == user.UserName && u.PassWord == user.PassWord);

if(item!=null)

{

Session["user"]= item;

return RedirectToAction("Index","Home");

}

ModelState.AddModelError("","login error");

return View(user);

}

4 結(jié) 語

MVC框架模式具有耦合性低、重用性高、部署快、可維護(hù)性高和有利軟件工程化管理等諸多優(yōu)點.ASP.NET MVC使用Razor 引擎視圖,Razor Pages 可以使基于頁面的編碼方式更簡單高效.MVC 模式在ASP.NET中為系統(tǒng)的設(shè)計與實現(xiàn)提供了一種很好的解決方案,實現(xiàn)了軟件開發(fā)的分工和應(yīng)用程序的模塊化,提高了代碼復(fù)用率,降低了維護(hù)成本.此外,所開發(fā)的實例在高等學(xué)校對教師課堂教學(xué)效果評測也有一定的參考和應(yīng)用價值.

猜你喜歡
頁面用戶模型
大狗熊在睡覺
一半模型
刷新生活的頁面
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
3D打印中的模型分割與打包
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
主站蜘蛛池模板: 久草视频精品| 欧美色视频在线| 在线观看91香蕉国产免费| 三上悠亚精品二区在线观看| 国产精品三区四区| 试看120秒男女啪啪免费| 免费a级毛片18以上观看精品| 亚洲国产综合精品一区| 亚洲av无码人妻| 国产97视频在线| 国产无码精品在线播放| 又爽又大又光又色的午夜视频| 久久婷婷色综合老司机| 91视频区| 456亚洲人成高清在线| 亚洲乱强伦| 无码专区国产精品一区| 成人国产精品2021| 国产黑丝视频在线观看| 国内精品九九久久久精品| 亚洲中文字幕在线观看| 一区二区三区毛片无码| 国产成人综合亚洲欧美在| av色爱 天堂网| 亚洲欧美精品一中文字幕| 福利在线一区| 99久久精品国产综合婷婷| 欧美精品亚洲精品日韩专区| 美女一级毛片无遮挡内谢| 亚洲网综合| 亚洲国产精品成人久久综合影院| 在线观看91香蕉国产免费| 国产精品夜夜嗨视频免费视频 | 国产成人综合在线观看| 欧美在线精品一区二区三区| 国产精品爽爽va在线无码观看| 成人小视频网| 亚洲无码高清免费视频亚洲| 久久黄色毛片| 丁香婷婷激情网| 精品国产Av电影无码久久久| 99久久精品视香蕉蕉| 无码福利视频| 国产午夜看片| 国产无码精品在线| 国产成人欧美| 日韩色图在线观看| 精品成人免费自拍视频| 亚洲不卡影院| 91极品美女高潮叫床在线观看| 91精品国产一区自在线拍| 亚洲美女一级毛片| 在线国产综合一区二区三区| www.狠狠| 国产成人超碰无码| 国产主播福利在线观看| 久久国产亚洲欧美日韩精品| 国产本道久久一区二区三区| 丁香五月激情图片| 国产电话自拍伊人| 亚洲另类国产欧美一区二区| a级免费视频| 亚洲欧洲日韩综合色天使| 99精品伊人久久久大香线蕉| YW尤物AV无码国产在线观看| 人妻无码中文字幕一区二区三区| 天天综合亚洲| a级毛片免费看| 在线观看欧美国产| 18禁影院亚洲专区| 亚洲综合18p| 日本成人福利视频| 国产女人在线| 午夜色综合| 亚洲中文无码av永久伊人| 亚洲欧美h| 亚洲精品波多野结衣| 婷婷综合在线观看丁香| 国产浮力第一页永久地址 | 亚洲人成网站在线观看播放不卡| 狼友av永久网站免费观看| 青青青视频91在线 |