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

?

MVC框架在ASP.NET中的應用研究與實踐

2021-01-20 00:54:30黃玉春
商丘師范學院學報 2021年3期
關(guān)鍵詞:控件視圖應用程序

黃玉春

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

近年來,越來越多的ASP.NET開發(fā)人員開始接觸MVC框架,開始大都認為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 應用 .它是從底層開始重新構(gòu)建來提供性能優(yōu)良的Web應用開發(fā)框架,可以部署在云上或者本地服務器上.ASP.NET Core實現(xiàn)了真正的跨平臺,用戶可以很容易的在Windows,Mac或者Linux上開發(fā)和部署Web應用,可以在云上部署和調(diào)試Web應用.

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

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

1 ASP.NET Web Forms

1.1 Web Forms簡介

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

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

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

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

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

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

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

1.2 Web Forms的優(yōu)點

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

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

(3)支持視圖狀態(tài),即通過ViewStates自動保存Post返回的狀態(tài),每個控件以“隱藏域”的形式存在當前表單頁面未達到“有狀態(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

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

圖1 WebForms頁面的運行示意圖

圖2 ASP.NET Web Forms三層體系結(jié)構(gòu)與MVC對應關(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負責數(shù)據(jù)處理,是應用程序中用于處理應用程序數(shù)據(jù)邏輯的部分;View負責視圖呈現(xiàn),是應用程序中處理數(shù)據(jù)顯示的部分;Controller負責處理視圖和模型之間的邏輯,是應用程序中處理用戶交互的部分,通常控制器從視圖讀取數(shù)據(jù)、控制用戶輸入,并向模型發(fā)送數(shù)據(jù).MVC大致流程如圖3所示.

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

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

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

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

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

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

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

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

2.2 MVC 的優(yōu)勢

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

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

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

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

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

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

2.3 MVC 的不足

MVC有以下不足之處:

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

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

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

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

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

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

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

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

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

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

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

3.2 模型層的設計

該系統(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)建,當應用程序首次執(zhí)行時,EF將在數(shù)據(jù)庫服務器中自動生成數(shù)據(jù)訪問層以及相應的數(shù)據(jù)庫.

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

在Web.Config 文件中< Configuration >標簽中添加如下代碼:

name="xspjDB"

providerName="System.Data.SqlClient"/>

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

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

public class Student

{

[DisplayName("編號")]

public int ID { get;set;}

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

@using(Html.BeginForm())

{

學生實習管理系統(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)中,控制層的設計采用分散控制器的原則.頁面控制器捕獲每個視圖頁面中發(fā)生的事件和提交的數(shù)據(jù),并調(diào)用相應模型來處理它們,最后決定視圖中的展現(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框架模式具有耦合性低、重用性高、部署快、可維護性高和有利軟件工程化管理等諸多優(yōu)點.ASP.NET MVC使用Razor 引擎視圖,Razor Pages 可以使基于頁面的編碼方式更簡單高效.MVC 模式在ASP.NET中為系統(tǒng)的設計與實現(xiàn)提供了一種很好的解決方案,實現(xiàn)了軟件開發(fā)的分工和應用程序的模塊化,提高了代碼復用率,降低了維護成本.此外,所開發(fā)的實例在高等學校對教師課堂教學效果評測也有一定的參考和應用價值.

猜你喜歡
控件視圖應用程序
刪除Win10中自帶的應用程序
電腦報(2019年12期)2019-09-10 05:08:20
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
5.3 視圖與投影
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
關(guān)閉應用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
就這樣玩會VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
三星電子將開設應用程序下載商店
微軟軟件商店開始接受應用程序
廉江市| 内江市| 许昌县| 隆林| 无为县| 黄陵县| 那坡县| 林甸县| 华坪县| 包头市| 奎屯市| 桐梓县| 富锦市| 深圳市| 洪雅县| 朝阳区| 呼和浩特市| 浪卡子县| 乌苏市| 尼木县| 施秉县| 新干县| 松原市| 伊春市| 泸水县| 南宁市| 高雄县| 华亭县| 仁化县| 伊金霍洛旗| 广西| 永康市| 阿拉尔市| 禹城市| 扎囊县| 花莲市| 莒南县| 三台县| 景洪市| 海阳市| 南木林县|