我应该在 ASP.NET MVC 4 中使用 AsyncController 吗?

Posted

技术标签:

【中文标题】我应该在 ASP.NET MVC 4 中使用 AsyncController 吗?【英文标题】:Should I use AsyncController at ASP.NET MVC 4? 【发布时间】:2012-11-23 04:20:20 【问题描述】:

这个类有这样的描述:

Provided for backward compatibility with ASP.NET MVC 3.

来源只是:

public abstract class AsyncController : Controller


我在 MSDN 上找不到任何关于弃用此类的文档。我应该将 AsyncController 的使用替换为 Controller 吗?

【问题讨论】:

【参考方案1】:

我应该在 ASP.NET MVC 4 中使用 AsyncController 吗?

没有。

我应该将 AsyncController 的使用替换为 Controller 吗?

是的,异步操作在 asp.net-mvc 4 中以新的方式实现,使用 Task Class

结合 .NET 4.5 的 ASP.NET MVC 4 控制器类启用 您编写返回类型对象的异步操作方法 任务。 .NET Framework 4 引入了异步 称为任务的编程概念和 ASP.NET MVC 4 支持 任务。任务由任务类型和相关类型表示 System.Threading.Tasks 命名空间。 .NET Framework 4.5 建立在 使用 await 和 async 关键字的这种异步支持 使用 Task 对象比以前的异步要简单得多 方法。 await 关键字是用于指示的语法简写 一段代码应该异步等待另一段 代码。 async 关键字表示可用于标记的提示 方法作为基于任务的异步方法。等待的组合, 异步,Task 对象让你更容易编写 .NET 4.5 中的异步代码。异步方法的新模型 被称为基于任务的异步模式(TAP)。本教程 假设您对使用异步编程有一定的了解 await 和 async 关键字以及 Task 命名空间。

更多阅读请访问Using Asynchronous Methods in ASP.NET MVC 4

【讨论】:

那么,答案是否定的?正确的?我不应该使用 AsyncController。我应该使用 Controller,因为“结合 .NET 4.5 的 ASP.NET MVC 4 Controller 类使您能够编写返回 Task 类型对象的异步操作方法” 是的,答案是“否”。如果使用 .NET 4.5,使用 Tasks 比继承 AsyncController 更简单、更好 如果不需要回调,Parallel.Invoke 似乎更简单。 TPL 给线程池带来了新问题,您应该注意线程不足等可伸缩性问题

以上是关于我应该在 ASP.NET MVC 4 中使用 AsyncController 吗?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 和 WCF

ASP.NET MVC 4 自定义 HTML Helpers 文件夹位置

ASP.NET MVC 4(测试版)中 HTML-5 data-* 属性的使用是不是中断?

ASP.NET 4.5 尚未在 Web 服务器上注册

在 .NET 中开发新的 RESTful Web 服务——我应该从哪里开始? ASP.NET-MVC,WCF?

在 Visual Studio 2008 中部署 ASP.NET MVC 应用程序