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