据我了解,MVC专门介绍了AsyncController
来处理在创建新线程时避免从ASP.NET线程池中窃取线程的问题。新的Web API没有类似的AsyncApiController
。 ApiController
的继承/实现签名也与Controller
和AsyncController
非常不同。
问题: Web API是否已经处理了在创建新线程时避免从ASP.NET线程池中窃取线程的问题?我错过了一些新的自动处理这个的东西吗?
供参考:
答案 0 :(得分:6)
ApiController
实现IHttpController
,该接口只定义一个返回ExecuteAsync
的方法(Task
),这意味着ApiController
是异步。< / p>
答案 1 :(得分:3)
MVC在MVC 2中引入了AsyncController来支持异步方法。使用异步控制器不会使您的代码神奇地异步。在MVC 4中,控制器支持异步方法,因此不需要AsyncController。异步方法不会用神奇的轻量级线程替换ASP.NET或IIS线程 - 当你进行异步工作时,你并不总是使用线程。例如,当您发出异步Web服务请求时,ASP.NET将不会在异步方法调用和await之间使用任何线程。请参阅我的教程Using Asynchronous Methods in ASP.NET MVC 4