回答
複製和粘貼從MVC4 Release Notes:
•現代HTTP編程模型:直接訪問和操作使用新的在Web API的HTTP請求和響應,強類型的HTTP對象模型。通過新的HttpClient類型,客戶端可以對稱地使用相同的編程模型和HTTP管道。
•對路由的全面支持:ASP.NET Web API支持ASP.NET路由的全套路由功能,包括路由參數和約束。另外,使用簡單的約定將動作映射到HTTP方法。
•內容協商:客戶端和服務器可以一起決定從Web API返回的數據格式正確。 ASP.NET Web API爲XML,JSON和表單URL編碼格式提供默認支持,您可以通過添加自己的格式化程序來擴展此支持,甚至可以替換默認的內容協商策略。
•模型綁定和驗證:模型綁定器提供了一種從HTTP請求的各個部分中提取數據並將這些消息部分轉換爲可由Web API操作使用的.NET對象的簡單方法。還基於數據註釋對動作參數進行驗證。
•篩選器:ASP.NET Web API支持包括衆所周知的篩選器(如[Authorize]屬性)的篩選器。您可以編寫並插入自己的過濾器,以執行操作,授權和異常處理。
•查詢組合:對返回IQueryable的操作使用[Queryable]過濾器屬性,以支持通過OData查詢約定查詢您的Web API。
•改善測試:而不是靜態上下文對象設置HTTP的詳細信息,網頁API操作與HttpRequestMessage和HttpResponseMessage的情況下工作。創建一個單元測試項目以及您的Web API項目,快速開始爲您的Web API功能編寫單元測試。
•基於代碼的配置:ASP.NET Web API配置僅通過代碼完成,使您的配置文件保持清潔。使用提供服務定位器模式來配置可擴展性點。
•的控制反轉(IoC)容器倒置的改進支持:網站的API可以是:的ASP.NET Web API通過改進依賴解析器抽象
•自主機提供IoC容器的大力支持託管在您自己的流程中,除了IIS,同時仍然使用Web API的路由和其他功能的全部功能。
•創建自定義的幫助和測試頁面:現在,您可以輕鬆地通過使用新的IApiExplorer服務,讓您的網絡API的完整的運行時的描述構建定製的幫助和測試頁爲您的網站的API。
•監控和診斷:ASP.NET Web API現在提供輕量級跟蹤基礎架構,可輕鬆與現有日誌記錄解決方案(如System.Diagnostics,ETW和第三方日誌記錄框架)集成。您可以通過提供一個ITraceWriter實現並將其添加到您的Web API配置來啓用跟蹤。
•鏈接生成:使用ASP.NET Web API UrlHelper生成指向同一應用程序中相關資源的鏈接。
•的Web API項目模板:選擇新的Web API項目形成新的MVC 4項目嚮導快速學習和使用的ASP.NET Web API運行。
•腳手架:使用「添加控制器」對話框以基於基於實體框架的模型類型快速搭建Web API控制器。
但是,這幾乎都是關於web api ....如果我不打算使用web api,有沒有什麼新東西可以學習? –
mvc3和mvc4都是Web開發框架。你的意思是.Net 4.5嗎? –
@JSKNS Web API是一個構建在ASP.NET MVC之上的框架,用於構建RESTful API。他的意思是說,發佈說明中的大部分內容都是Web API特定的,而不是所有ASP.NET MVC的通用內容。 –
複製並粘貼到Whats new in MVC4 - MVC3 Vs MVC4
哪些新的MVC4 - MVC3 Vs的MVC4
增強默認的項目模板
用來創建新的ASP模板。 NET MVC 4項目已更新,以創建更現代的網站
移動項目模板
如果你開始一個新項目,要創建一個特定的網站手機和平板電腦的瀏覽器,你可以使用新的移動應用程序的項目模板。這是基於jQuery Mobile的,一個開源庫,用於構建觸摸優化的UI
顯示模式
新的顯示模式功能,您的應用程序中選擇這取決於對提出請求的瀏覽器視圖。例如,如果桌面瀏覽器請求主頁,則應用程序可能會使用Views\Home\Index.cshtml
模板。如果移動瀏覽器請求主頁,則應用程序可能會返回Views\Home\Index.mobile.cshtml
模板。
DisplayModes.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.Request.UserAgent.IndexOf
("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
jQuery Mobile的,視圖切換器和瀏覽器重寫
jQuery Mobile的是建設觸摸優化的web用戶界面的開源庫。如果您想使用帶有ASP.NET MVC 4應用程序的jQuery Mobile,則可以下載並安裝一個可幫助您入門的NuGet包。要從Visual Studio Package Manager Console安裝它,請鍵入以下命令: Install-Package jQuery.Mobile。MVC 這將安裝jQuery Mobile的和一些輔助文件,包括以下內容: 查看/共享/ Layout.Mobile.cshtml,這是一個基於移動jQuery的佈局。 視圖-切換器組件,其由所述查看/共享/ ViewSwitcher.cshtml局部視圖和ViewSwitcherController.cs控制器。 安裝包後,運行使用移動瀏覽器應用程序(或等值,像Firefox的用戶代理切換器插件)。你會發現你的頁面看起來完全不同,因爲jQuery Mobile處理佈局和樣式。爲了充分利用這一點,你可以做以下 如果訪問者點擊該鏈接後,會切換到同一頁面的桌面版本。 因爲你的桌面佈局將不包括默認視圖切換,遊客會不會有一種方式來獲得移動模式。爲了實現這一點,以下引用 _ViewSwitcher添加到您的桌面佈局,只是裏面的元素:
@Html.Partial("_ViewSwitcher")
... 瀏覽器重寫是ASP.NET的核心功能MVC 4和可即使你不要安裝jQuery.Mobile.MVC包。但是,它僅影響視圖,佈局和局部視圖選擇 - 它不會影響依賴於Request.Browser對象的任何其他ASP.NET功能。在Visual Studio
新的食譜功能
食譜代碼生成使Visual Studio來生成基於您可以安裝使用的NuGet包的特定解決方案的代碼。 Recipes框架使開發人員可以輕鬆編寫代碼生成插件,您還可以使用它替換添加區域,添加控制器和添加視圖的內置代碼生成器。由於配方以NuGet包的形式部署,因此可以輕鬆將其檢入到源代碼管理中,並自動與項目中的所有開發人員共享。它們也可以按照解決方案提供。
任務支持異步控制器
現在,您可以編寫異步操作方法爲單一的方法,返回類型任務或任務的對象。
例如,如果你使用Visual C#5(或使用異步CTP),您可以創建一個異步操作方法如下所示:
public async Task Index(string city) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common", new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(),
SportsScores = await sportsService.GetScoresAsync()
});
}
在前面的操作方法,該對newsService.GetHeadlinesAsync和sportsService.GetScoresAsync的調用是異步調用的,不會阻塞線程池中的線程。
異步操作方法,返回任務實例也可以支持超時。要使您的操作方法可取消,請將類型CancellationToken的參數添加到操作方法簽名中。以下示例顯示了一個異步操作方法,其超時時間爲2500毫秒,如果發生超時,則會向客戶端顯示TimedOut視圖。
[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task Index(string city, CancellationToken cancellationToken) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common", new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
SportsScores = await sportsService.GetScoresAsync(cancellationToken)
});
}
希望這有助於。由於
去MVC 3
- 通過的NuGet綜合腳手架系統可擴展
- HTML 5啓用項目模板
- 表現視圖,包括新的Razor視圖 引擎
- 強大的依賴注入鉤子和 全局動作過濾器
- 豐富的JavaScript的支持與侵入式JavaScript,jQuery驗證和JSON結合
MVC 4
- 的ASP.NET Web API
- 裝修一新的,現代化的默認項目 模板
- 新手機項目模板
- 許多支持移動應用程序的新功能
- 爲異步方法 增強支持
編號:http://dotnet-developers-cafe.blogspot.in/2013/09/difference-between-aspnet-mvc-3-and-mvc.html
一個在MVC 4.0中引入的重要特點之一是異步控制器,這使得編寫異步操作方法。異步控制器允許在不使工作線程空閒的情況下執行操作。
當調用異步操作,發生以下步驟:
Web服務器會從線程池(工作線程),並安排它來處理傳入的請求的線程。此工作線程啓動異步操作。 工作線程返回到線程池以處理其他Web請求。 當異步操作完成時,它會通知ASP.NET。 Web服務器從線程池(可能是與啓動異步操作的線程不同的線程)獲取工作線程,以處理請求的其餘部分,包括呈現響應。
轉換同步動作的方法,以異步操作方法
以下是同步的操作方法,並在它的異步等效版本的例子。
同步控制器:
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
}
上述操作的異步變體:
public class TestController : AsyncController
{
public void IndexAsync()
{
return View();
}
public ActionResult IndexCompleted()
{
return View();
}
}
步驟:
同步控制器從控制器 類派生的類來實現的AsyncController而不是派生的 控制器從控制器,從AsyncController類派生它。 從AsyncController派生的控制器使ASP.NET能夠處理異步請求 ,並且它們仍然可以服務同步的 動作方法。
對應的同步動作方法同步 控制器,你需要創建在啓動異步 過程中必須有一個由行動的名稱和後綴 異步controller.First方法的動作兩種方法 「異步」。另一種在異步過程完成時調用的方法(回調方法)必須具有一個名稱,該名稱由操作的 和後綴「Completed」組成。
在上面的示例中,Index操作已變爲 異步控制器中的兩種方法:IndexAsync和 IndexCompleted。
IndexAsync方法返回void,而IndexCompleted方法 返回ActionResult實例。雖然該操作由兩個方法組成,但它們使用與同步 操作方法(例如Controller/Index)相同的URL進行訪問。
請注意以下有關異步操作方法:
如果動作的名稱是樣品,框架將尋找SampleAsync和SampleCompleted方法。
查看頁面應該命名爲Sample.aspx,而不是SampleAsync.aspx或SampleCompleted.aspx。 (動作名稱爲Sample,而不是SampleAsync)
控制器不能包含名爲SampleAsync的異步方法和名爲Sample的同步方法。如果有,則會引發AmbiguousMatchException異常,因爲SampleAsync操作方法和Sample操作方法具有相同的請求籤名。
欲瞭解更多詳情請點擊這裏:http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html
異步控制器在其他響應中提到(來自2年前) –
但是這裏沒有提到MVC 4中引入的異步控制器。這就是我在這裏提到的原因。 –
- 1. ASP.NET MVC 1和3之間的區別
- 2. asp.net mvc OnAuthorization和OnActionExecuting之間的區別
- 3. IModelBinder和IModelBinderProvider之間的區別asp.net mvc 3
- 4. JUnit 3和JUnit 4之間的區別4
- 5. ASP.NET 4中'(單引號)和「(雙引號)之間的區別4
- 6. Clojure(3)和3之間的區別
- 7. ASP.NET MVC中的ASP.NET控件和Html.helpers之間有什麼區別?
- 8. MVP MVC和MVVM之間的區別
- 9. 區別(3)中[[]] * 3和[[]]之間的區別]
- 10. lisp中'((1 2)(3 4))和'('(1 2)'(3 4))之間的區別是什麼?
- 11. php 4和php 5之間的區別?
- 12. iPhone SDK 3.x和4.x之間的區別
- 13. OpenGL 3.x和4.X之間的區別?
- 14. Rails 3:Relation.count和Relation.ount.count之間的區別
- 15. varchar(3)和varchar(300)之間的區別
- 16. spring mvc和Jersey之間的區別
- 17. MVC中的HttpContext.Current和Controller.Context之間的區別ASP.NET
- 18. ASP.NET MVC中的url是否存在Url.Content(「〜/ ...」)和「〜/」之間的區別?
- 19. MVC和MVVM之間的區別和相似之處是什麼?
- 20. ASP.NET WebHooks和Signal-R之間的區別
- 21. ASP.Net中Gridview和Repeater之間的區別
- 22. ASP.Net,C#.Net和VB.Net之間的區別?
- 23. Asp.NET MVC - ViewPage和WebViewPage類之間的區別
- 24. ASP.NET MVC 2.0 - RenderPartial和RenderAction之間的區別
- 25. ASP.NET MVC中ViewModel和Model之間的關鍵區別是什麼?
- 26. ASP.NET MVC中的string.Format和TagBuilder之間有什麼區別?
- 27. IIS 7和ASP.NET MVC客戶端緩存之間的區別
- 28. ASP.NET MVC:在ActionFilterAttribute類中,OnActionExecuted和OnResultExecuted之間有什麼區別?
- 29. EF.SqlServer和EF.SqlServerCompact之間的區別
- 30. Laravel 4中的Input :: flash()和Session :: flash()之間的區別4
看版本說明:http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253808 –
「發行說明是不是......有幫助「...」看看版本說明..「? –