回答
复制和粘贴从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 –
“发行说明是不是......有帮助“...”看看版本说明..“? –