MVC4版是一個相當成熟的基礎上,能夠把重點放在一些更高級的場景。Asp.Net步入4.0的時代了,MVC4.0出來的新特性很是犀利,各種犀利。分享一下,大家愿意涉足的就了解一哈。MVC 4.0新出的特性可謂關注最強烈的就是Web API。
一些高級的功能包括:
ASP.NET Web API
Enhancements to default project templates(增強了默認的項目模板)
Mobile project template using jQuery Mobile(使用jQuery Mobile的移動項目模板)
Display Modes(顯示模式)
Task support for Asynchronous Controllers(任務支持異步控制器)
Bundling and minifi cation(捆綁和微小)
ASP.NET Web API
ASP.NET MVC的目的是為創(chuàng)建網(wǎng)站。整個平臺是明顯的設計的決定,表示假設的用法:響應瀏覽器請求并返回HTML。
MVC4包括一個更好的解決方案:ASP.NET Web API的(稱為作為Web API),該框架提供ASP.NET MVC的開發(fā)風格,是專為編寫HTTP服務。這包括修改一些ASP.NET MVC的概念來的HTTP服務領域,并提供一些新的面向服務的功能。
這里有一些類似MVC的Web API功能,只適用于HTTP服務域:
路由:ASP.NET的Web API使用相同的路由系統(tǒng),將URL映射到控制器行動。它的背景路由到HTTP服務的HTTP動詞映射到行動按照慣例,使代碼更容易閱讀和鼓勵以下的RESTful設計服務。
模型綁定和驗證:正如MVC簡化的過程中,映射輸入值(表單域,cookies,URL參數(shù)等),模型值,Web API的自動映射HTTP請求值模型?蓴U展性和約束力的制度包括弼基于相同attri-bute-based驗證中使用MVC模型綁定。
過濾器:MVC使用過濾器來允許添加行為的行動通過屬性。例如,添加[Authorize]屬性的MVC行動將禁止匿名訪問,自動重定向到登錄頁面。網(wǎng)絡API也支持一些lters標準的MVC網(wǎng)絡連接(如服務的優(yōu)化[Authorize]屬性)和自定義過濾器。
(Scaffolding)腳手架:添加新的Web API控制器使用相同的對話框,用于添加一個MVC控制器。您可以選擇使用“添加控制器直徑日志來快速支架,一個Web API控制器的基礎上的實體框架為基礎的模式類型。
簡易裝置可測性:就像MVC Web API是建立在依賴的概念注射,避免使用全局狀態(tài)。
網(wǎng)絡API還增加了一些新的概念和功能明確HTTP服務的發(fā)展:
HTTP的Web編程模型:API開發(fā)工作的經(jīng)驗進行了優(yōu)化HTTP請求和響應。有一個強類型的HTTP對象模型,HTTP狀態(tài)碼和頭方便等.
方法是基于HTTP:MVC派遣的操作方法是根據(jù)他們的名字。在Web API的方法可以自動調(diào)度的基礎上HTTP.
內(nèi)容協(xié)商:HTTP長期以來一直支持系統(tǒng)的內(nèi)容協(xié)商,在瀏覽器(和其他HTTP客戶端)表示他們的反應的格式喜好,和服務器響應最高的首選,它可以支持的格式。這意味著,您的控制器可以提供XML,JSON和其他格式(你可以添加你自己的),響應任何客戶端最喜歡的格式。這使您可以添加對新格式的支持,而不不必改變?nèi)魏蔚目刂破鞔a.
基于代碼的組態(tài):組態(tài)服務可能會很復雜。不像WCF的詳細復雜的組態(tài)文件的方法,Web API是完全通過代碼配置。
雖然ASP.NET的Web API包含與MVC4,它可以被單獨使用。事實上,它沒有依賴于ASP.NET所有,并且可以自托管的,那就是外托管ASP.NET 和IIS。這意味著您可以運行Web API。NET應用程序,包括Windows服務或甚至一個簡單的控制臺應用程序。
Enhancements to Default Project Templates
默認的模板的可視化設計MVC的1個項目已經(jīng)基本保持不變通過MVC 3當您創(chuàng)建了一個新的MVC項目,并運行它,你有一個白色方形藍色背景,如在圖1中示出。 在MVC中,無論是HTML和CSS的默認模板已經(jīng)完全重新設計。一新的MVC應用程序出現(xiàn)如圖1所示。在MVC4中,無論是HTML和CSS的默認模板已經(jīng)完全重新設計。一新的MVC應用程序出現(xiàn)如圖2所示.
圖1.
圖2.
您的網(wǎng)站應該擁有自己的定制設計,這是很好的,在底層的HTML和CSS,MVC4個項目都可以通過現(xiàn)代化的標記和CSS,能夠很好地響應不斷增長的移動瀏覽器的收視率。
Mobile Project Template Using jQuery Mobile
如果你將要創(chuàng)建的網(wǎng)站,將被視為在移動瀏覽器,你可以使用新的移動項目模板。此模板預配置您的網(wǎng)站使用流行的jQuery手機庫,它提供了風格,看起來不錯,在移動設備上,如下圖所示圖3,4所示。 jQuery Mobile的觸摸優(yōu)化,支持Ajax導航,采用逐行支持移動設備的功能增強。
圖3.
圖4.
Display Modes
顯示模式使用一個基于約定的方法允許選擇不同的觀點的基礎上瀏覽器發(fā)出請求。默認視圖引擎將首先查找與名稱以.Mobile.cshtml瀏覽器的用戶代理時,表示已知的移動設備。此外,您還可以注冊自己的自定義設備模式,將根據(jù)自己的定制標準 - 所有的只是一個代碼語句。例如,要注冊一個WinPhone設備模式,將有助于視圖結束。.WinPhone.cshtmlto的Windows Phone設備,你會用下面的代碼,在您的global.asax Application_Startmethod:
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("WinPhone") { ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf ("Windows Phone OS", StringComparison.OrdinalIgnoreCase) >= 0) });
Bundling and Minification
ASP.NET 4支持相同的捆綁和微小的框架中包含ASP.NET4.5。該系統(tǒng)減少了通過結合幾個單獨的腳本引用到您的網(wǎng)站的請求一個單一的請求。它還“更少”的要求,通過一些技術,如縮短變量名和刪除空白符和注釋。該系統(tǒng)的工作原理,以及對CSS,CSS請求捆綁成一個單一的請求,和壓縮的CSS請求的大小,以產(chǎn)生使用最少的字節(jié),包括語義分析等先進技術的同等規(guī)則關閉CSS選擇器。
是高度可配置的捆綁系統(tǒng),使您可以創(chuàng)建自定義捆綁包含特定的腳本,并引用它們與一個單一的URL。你可以看到一些例子參照在/ App_Start/ BundleConfig.cs在一個新的MVC應用程序使用的默認列出的軟件包互聯(lián)網(wǎng)的模板。
一個不錯的副產(chǎn)品利用捆綁和縮小,你可以刪除文件引用你的視圖代碼這意味著,你可以添加或升級腳本庫和CSS網(wǎng)絡連接文件有不同的文件名,而無需以更新您的視圖布局,因為引用腳本和CSS束,而不是單個文件。例如,MVC的互聯(lián)網(wǎng)應用溫度板包括一個jQuery包,不依賴于版本號:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); |
這是束URL中引用的站點布局(_Layout.cshtml),如下:
@Scripts.Render("~/bundles/jquery")
由于這些引用不依賴jQuery的版本號,更新了jQuery庫(無論是手動或通過的NuGet)將被自動拿起的捆綁和微小系統(tǒng)無需進行任何代碼更改.
Miscellaneous Features(其他特性)
MVC包括了很多以前沒有列出的功能的完整列表是在發(fā)行說明,可在 http://www.asp.net/whitepapers/mvc4-release-notes 看到。
配置的邏輯搬到App_Start:新功能都不錯,但額外的邏輯通過代碼配置的功能,真的開始變得混亂起來的Global.asax的Application_Start方法。這些配置已經(jīng)移動到靜態(tài)類的App_Start目錄.
AuthConfig.cs:配置安全設置,包括網(wǎng)站的OAuth登錄。
BundleConfig.cs:用于注冊所使用的捆綁和微小的束系統(tǒng)。幾束被添加默認情況下,包括jQuery和jQuery驗證,jQueryUI,Modernizr,默認的CSS引用。
FilterConfig.cs:毫無疑問,這是用來,注冊全球MVC濾波器。唯一的網(wǎng)絡連接默認情況下,濾波器注冊的HandleErrorAttribute,但這個是一個偉大的地方,把
其他的網(wǎng)絡連接濾波器注冊。
RouteConfig.cs:持有的原始MVC的配置語句,配置路由。
WebApiConfig.cs:用于注冊Web API的路線,以及任何其他WebAPI的配置設置。
空的MVC項目模板:MVC包含一個空的項目模板,因為MVC2,但它是不是真的空,它仍然包含一個CSS文件,文件夾結構,并超過打Javascript的網(wǎng)絡連接文件。該模板由于受歡迎的請求,已更名為“基本”,和新的空項目模板,真的是空的。
任何地方添加控制器:在此之前,在Visual Studio添加控制器“菜單項,僅顯示播放時,右鍵單擊控制器文件夾。然而,使用的控制器文件夾是純粹的組織。 (MVC將識別任何類,它實現(xiàn)IController接口作為控制器,無論它的位置在您的應用程序。)MVC4 Visual Studio工具已被修改以顯示“添加控制器”菜單項的任何你的MVC項目的文件夾中。這允許你組織你的控制器,但你會想,也許把它們分開成邏輯組或分離的MVC和Web API控制器。