位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# ASP.NET MVC

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-09
選擇ASP.NETMVC,而不是其他ASP.NET應(yīng)用程序類型的原因如下:

    ?ASP.NETMVC非常適合較大的、較復(fù)雜的Web應(yīng)用程序

    ?ASP.NET MVC與Entity Framework (EF)和模型綁定緊密結(jié)合在一起

    ?ASP.NET MVC與測(cè)試驅(qū)動(dòng)開發(fā)(Test-Driven Development,TDD)緊密結(jié)合在一起

    如前所述,ASRNET Web Forms分為兩個(gè)單獨(dú)的模塊,ASP.NET MVC則分為三個(gè)單獨(dú)的模塊:模型、視圖和控制器。前面提到了分離模塊對(duì)ASRNET Web Forms的幫助,對(duì)于ASP.NETMVC,模塊的分離也有同樣的幫助。模塊的分離,使得較大的團(tuán)隊(duì)能按專長(zhǎng)分姐,同時(shí)開發(fā)應(yīng)用程序的不同方面,從而加快開發(fā)速度。


    Entity Framework(EF)是一種對(duì)象關(guān)系模型(Object Relationship Model, ORM)技術(shù)。它與ASP.NETMVC架構(gòu)和模型綁定緊密結(jié)合在一起。ORM(以及EF)使開發(fā)人員能以面向?qū)ο蟮姆绞皆O(shè)計(jì)數(shù)據(jù)庫(kù)。例如,如果某個(gè)ASP.NETMVC應(yīng)用程序用于存儲(chǔ)關(guān)于人的信息,那么下面的Person類可存儲(chǔ)和檢索這些信息。

public class Person

{

    public string Name { get; set; } 

    public int Age { get; set; }

}

    設(shè)計(jì)好數(shù)據(jù)模型后,開發(fā)人員可將模型部署到數(shù)據(jù)庫(kù)(如SQL Server)和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫(kù)表及主鍵和外鍵是使用C#類中的描述生成的。當(dāng)在Visual Studio中創(chuàng)建一個(gè)ASP.NETMVC應(yīng)用程序后,默認(rèn)解決方案會(huì)包含一個(gè)Models文件夾,數(shù)據(jù)庫(kù)表的C#類表示就放在這個(gè)文件夾中。這些類用于存儲(chǔ)內(nèi)存中的數(shù)據(jù)庫(kù)數(shù)據(jù),供更新視圖的控制器修改。在默認(rèn)的ASP.NETMVC應(yīng)用程序中,有一個(gè)名為Controllers和Views 的文件夾。

    在控制器中,開發(fā)人員添加代碼,通過使用綁定的Model對(duì)象(如Person)和EF邏輯來創(chuàng)建、讀取、更新或刪除數(shù)據(jù)庫(kù)的內(nèi)容。控制器也是執(zhí)行任何業(yè)務(wù)邏輯、身份驗(yàn)證或應(yīng)用程序需要的其他任何活動(dòng)的地方。視圖是表示層,由客戶端觸發(fā),在控制器中使用面向?qū)ο竽P蛨?zhí)行的動(dòng)作的輸出將在這里呈現(xiàn)給客戶端。


    ASP.NETMVC與測(cè)試驅(qū)動(dòng)開發(fā)技術(shù)緊密結(jié)合在一起,與ASP.NET Web Forms相比,更容易進(jìn)行單元測(cè)試。當(dāng)創(chuàng)建一個(gè)ASP.NET應(yīng)用程序時(shí),有一個(gè)復(fù)選框可供選擇,如果選中該復(fù)選框,將創(chuàng)建另一個(gè)項(xiàng)目,專門用于對(duì)此程序進(jìn)行單元測(cè)試。

    通過將測(cè)試代碼放到Tests項(xiàng)目中,可從測(cè)試用例抽象出依賴,如IIS、數(shù)據(jù)庫(kù)和外部類。這是一個(gè)非常重要且有幫助的功能,因?yàn)樵诓煌纳a(chǎn)實(shí)例中,數(shù)據(jù)常常是不同的,而且運(yùn)行IIS的服務(wù)器版本可能在生產(chǎn)環(huán)境和測(cè)試環(huán)境中表現(xiàn)出不一致的行為。移除這些依賴,即只測(cè)試控制器內(nèi)的邏輯,而不考慮依賴的狀態(tài),能改進(jìn)測(cè)試的速度和效率。原因在于,開發(fā)人員不必使所有依賴保持在有效的、穩(wěn)定的測(cè)試狀態(tài)(這是非常耗時(shí)的操 作),而可以將注意力集中在確保測(cè)試場(chǎng)景能成功完成。


    ASP.NET MVC使用無擴(kuò)展名的URL:在請(qǐng)求中,不會(huì)添加具體文件名。在ASP.NET Web Forms應(yīng)用程序中會(huì)請(qǐng)求.aspx文件,但在ASP.NETMVC中并非如此。ASP.NET MVC采用了 “路由”概念,使用URL片段(而不是文件名)把請(qǐng)求路由到正確的控制器和視圖。例如,請(qǐng)求/Home/About時(shí),將執(zhí)行名為HomeController的控制器中的About()方法,該控制器保存在Controllers文件夾中。通過使用Views\Home目錄中名為About.cshtml的視圖,將About()方法的結(jié)果呈現(xiàn)給客戶端。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部