C# ASP.NET MVC
?ASP.NETMVC非常適合較大的、較復(fù)雜的Web應(yīng)用程序
?ASP.NET MVC與Entity Framework (EF)和模型綁定緊密結(jié)合在一起
?ASP.NET MVC與測試驅(qū)動開發(fā)(Test-Driven Development,TDD)緊密結(jié)合在一起
如前所述,ASRNET Web Forms分為兩個單獨的模塊,ASP.NET MVC則分為三個單獨的模塊:模型、視圖和控制器。前面提到了分離模塊對ASRNET Web Forms的幫助,對于ASP.NETMVC,模塊的分離也有同樣的幫助。模塊的分離,使得較大的團隊能按專長分姐,同時開發(fā)應(yīng)用程序的不同方面,從而加快開發(fā)速度。
Entity Framework(EF)是一種對象關(guān)系模型(Object Relationship Model, ORM)技術(shù)。它與ASP.NETMVC架構(gòu)和模型綁定緊密結(jié)合在一起。ORM(以及EF)使開發(fā)人員能以面向?qū)ο蟮姆绞皆O(shè)計數(shù)據(jù)庫。例如,如果某個ASP.NETMVC應(yīng)用程序用于存儲關(guān)于人的信息,那么下面的Person類可存儲和檢索這些信息。
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
設(shè)計好數(shù)據(jù)模型后,開發(fā)人員可將模型部署到數(shù)據(jù)庫(如SQL Server)和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫表及主鍵和外鍵是使用C#類中的描述生成的。當在Visual Studio中創(chuàng)建一個ASP.NETMVC應(yīng)用程序后,默認解決方案會包含一個Models文件夾,數(shù)據(jù)庫表的C#類表示就放在這個文件夾中。這些類用于存儲內(nèi)存中的數(shù)據(jù)庫數(shù)據(jù),供更新視圖的控制器修改。在默認的ASP.NETMVC應(yīng)用程序中,有一個名為Controllers和Views 的文件夾。
在控制器中,開發(fā)人員添加代碼,通過使用綁定的Model對象(如Person)和EF邏輯來創(chuàng)建、讀取、更新或刪除數(shù)據(jù)庫的內(nèi)容??刂破饕彩菆?zhí)行任何業(yè)務(wù)邏輯、身份驗證或應(yīng)用程序需要的其他任何活動的地方。視圖是表示層,由客戶端觸發(fā),在控制器中使用面向?qū)ο竽P蛨?zhí)行的動作的輸出將在這里呈現(xiàn)給客戶端。
ASP.NETMVC與測試驅(qū)動開發(fā)技術(shù)緊密結(jié)合在一起,與ASP.NET Web Forms相比,更容易進行單元測試。當創(chuàng)建一個ASP.NET應(yīng)用程序時,有一個復(fù)選框可供選擇,如果選中該復(fù)選框,將創(chuàng)建另一個項目,專門用于對此程序進行單元測試。
通過將測試代碼放到Tests項目中,可從測試用例抽象出依賴,如IIS、數(shù)據(jù)庫和外部類。這是一個非常重要且有幫助的功能,因為在不同的生產(chǎn)實例中,數(shù)據(jù)常常是不同的,而且運行IIS的服務(wù)器版本可能在生產(chǎn)環(huán)境和測試環(huán)境中表現(xiàn)出不一致的行為。移除這些依賴,即只測試控制器內(nèi)的邏輯,而不考慮依賴的狀態(tài),能改進測試的速度和效率。原因在于,開發(fā)人員不必使所有依賴保持在有效的、穩(wěn)定的測試狀態(tài)(這是非常耗時的操 作),而可以將注意力集中在確保測試場景能成功完成。
ASP.NET MVC使用無擴展名的URL:在請求中,不會添加具體文件名。在ASP.NET Web Forms應(yīng)用程序中會請求.aspx文件,但在ASP.NETMVC中并非如此。ASP.NET MVC采用了 “路由”概念,使用URL片段(而不是文件名)把請求路由到正確的控制器和視圖。例如,請求/Home/About時,將執(zhí)行名為HomeController的控制器中的About()方法,該控制器保存在Controllers文件夾中。通過使用Views\Home目錄中名為About.cshtml的視圖,將About()方法的結(jié)果呈現(xiàn)給客戶端。
點擊加載更多評論>>