ASP.NET MVC中的异步控制器

Shu*_*ing 10 asp.net-mvc asp.net-mvc-4

我检查了MVC 4.0中的System.Web.Mvc.AsyncController,它的注释"提供了与ASP.NET MVC 3的向后兼容性".这是否意味着MVC 4中有一个新的异步控制器实现?什么是MVC 4.0中的正确方法启用异步控制器,以便将I/O密集操作放在IIS请求线程池以外的其他线程池中?

tug*_*erk 13

从ASP.NET MVC 4开始,您现在可以使用System.Web.Mvc.Controller该类作为基类并利用TAP(基于任务的异步模式):

public async Task<ViewResult> Index() { 

     return View(await GetThingsAsync());
}
Run Code Online (Sandbox Code Playgroud)

请注意,您不必使用asyncawait它配备了C#5.0关键字,但他们使异步编程多,更容易和更容易维护.

看看以下文章:

  • @Spook没有C#4.5:https://en.wikipedia.org/wiki/C_Sharp_ (programming_language)#Versions async/await语言支持附带C#5.0,它还需要.NET 4.5.您可以使用.NET 4.0并利用来自BCL团队的NuGet包的async/await语言功能:http://www.nuget.org/packages/Microsoft.Bcl.Async/ (2认同)