亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2021-01-20 00:54:30黃玉春
        關(guān)鍵詞:控件視圖應(yīng)用程序

        黃玉春

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

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

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

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

        針對(duì)上述不足,對(duì)ASP.NET Core框架中的MVC開(kāi)發(fā)框架進(jìn)行探索,并通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明ASP.NET MVC的應(yīng)用.

        1 ASP.NET Web Forms

        1.1 Web Forms簡(jiǎn)介

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

        Web Forms 請(qǐng)求流程如圖1所示.

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

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

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

        (3)創(chuàng)建頁(yè)面類(lèi)對(duì)象,返回給瀏覽器.

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

        1.2 Web Forms的優(yōu)點(diǎn)

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

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

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

        1.3 Web Forms的缺點(diǎn)

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

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

        (3) 因?yàn)椴捎胏ode-behind 代碼后置技術(shù),每個(gè)aspx文件都包含.aspx和.aspx.cs兩個(gè)文件,緊密耦合度太高.

        (4)因?yàn)榫o密耦合度太高、使用大量的事件處理函數(shù),不利于單元測(cè)試.

        2 ASP.NET MVC

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

        圖1 WebForms頁(yè)面的運(yùn)行示意圖

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

        通過(guò)研究可以發(fā)現(xiàn)MVC的改變有兩點(diǎn).一是View變成簡(jiǎn)單的HTML代碼,二是后臺(tái)代碼移到簡(jiǎn)單的.NET類(lèi)中,稱(chēng)為控制器.

        ASP.NET MVC 請(qǐng)求流的通用步驟是:首先獲取控制器.其次依賴(lài)行為(Action)控制器創(chuàng)建Model對(duì)象,Model通過(guò)轉(zhuǎn)換調(diào)用數(shù)據(jù)訪問(wèn)層.最后數(shù)據(jù)填充Model之后,傳遞到View 顯示層,實(shí)現(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)用程序中處理用戶(hù)交互的部分,通??刂破鲝囊晥D讀取數(shù)據(jù)、控制用戶(hù)輸入,并向模型發(fā)送數(shù)據(jù).MVC大致流程如圖3所示.

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

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

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

        對(duì)于瀏覽器端的一個(gè)http請(qǐng)求,請(qǐng)求的是控制器的某一個(gè)Action方法,一般格式為:

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

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

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

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

        2.2 MVC 的優(yōu)勢(shì)

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

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

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

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

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

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

        2.3 MVC 的不足

        MVC有以下不足之處:

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

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

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

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

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

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

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

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

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

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

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

        3.2 模型層的設(shè)計(jì)

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

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

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

        name="xspjDB"

        providerName="System.Data.SqlClient"/>

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

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

        public class Student

        {

        [DisplayName("編號(hào)")]

        public int ID { get;set;}

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

        public string sCode { get;set;}

        [DisplayName("姓名"),Required]

        public string sName { get;set;}

        [DisplayName("班級(jí)編號(hào)"),Required]

        public string classID { get;set;}

        [DisplayName("班級(jí)")]

        public virtual Class Class { get;set;}

        }

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

        public class XspjDB:DbContext

        {

        public DbSet Students

        {get;set;}

        public DbSet Teachers

        {get;set;}

        }

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

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

        @using(Html.BeginForm())

        {

        學(xué)生實(shí)習(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 控制器實(shí)現(xiàn)

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

        用戶(hù)管理控制器accountController處理登錄頁(yè)面的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é) 語(yǔ)

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

        猜你喜歡
        控件視圖應(yīng)用程序
        刪除Win10中自帶的應(yīng)用程序
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        5.3 視圖與投影
        視圖
        Y—20重型運(yùn)輸機(jī)多視圖
        SA2型76毫米車(chē)載高炮多視圖
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        三星電子將開(kāi)設(shè)應(yīng)用程序下載商店
        微軟軟件商店開(kāi)始接受應(yīng)用程序
        国产人妻精品无码av在线| 91综合在线| 日本国产视频| 99在线视频精品费观看视| 99热这里只有精品久久6| av国产免费在线播放| 国产自拍偷拍视频免费在线观看 | 国产亚洲精品久久久久久国模美| 999久久久无码国产精品| 国产乱人伦偷精品视频| 美女啪啪国产| 92精品国产自产在线观看48页| 视频在线亚洲视频在线| 亚洲性色av一区二区三区| 精品国精品无码自拍自在线| 亚洲色图视频在线| 日本中文字幕一区二区在线观看| 国产精品自拍视频在线| 无码人妻h动漫中文字幕| 最近在线更新8中文字幕免费 | 国产福利酱国产一区二区| 久久精品国产亚洲av成人网| 人妻一区二区三区在线看| 精品无码av无码专区| 久久青青草原亚洲av无码麻豆| 在线播放无码高潮的视频| 亚洲国产成人无码影院| 日本精品啪啪一区二区| 亚洲av无码成h在线观看| 曰欧一片内射vα在线影院| 亚洲区小说区图片区| 中文字幕 在线一区二区| 五月婷婷六月丁香久久综合| 米奇7777狠狠狠狠视频影院| 一本到无码AV专区无码| 国产精品一品二区三区| 亚洲中文久久精品字幕| 成人在线免费电影| 成人无码免费一区二区三区| 999久久久免费精品国产牛牛| 日韩精品免费观看在线|