0

我对 ASP.NET MVC 有点陌生,搜索后我还有一件事不明白。为什么需要异步控制器?由于每个 HTTP 请求都会导致服务器创建一个新的控制器实例,所以服务器不会阻塞任何请求,那么为什么需要异步控制器呢?

4

1 回答 1

0

异步控制器的全部意义在于在执行长操作时释放 IIS 线程。IIS 线程是从 .NET 线程池中提取的。线程池线程的最大数量将根据您的系统配置而有所不同(在我的 core-2-quad 上是 1023)。这意味着长操作将消耗这些线程之一。当达到最大数量时,其他请求可能必须等到释放一个。说的很清楚:如果你有 1023 个动作执行长轮询请求,你的网站将停止响应额外的请求。

当您使用异步控制器时,您可以在线程池之外创建线程,从而绕过这个最大线程限制。

于 2012-11-08T14:07:55.430 回答