什么时候应该在ASP.NET MVC中使用异步控制器?

And*_*ech 7 asp.net-mvc scaling asynchronous controller

将ASP.NET MVC同步控制器(Controller)更改为异步控制器(AsyncController)似乎是一件微不足道的事情,但是什么时候应该这样做?

我是否应该让每个控制器都异步而不管其动作如何?如果在异步控制器中使用,将会改进哪些操作示例?

以最简单的例子:静态html页面.因此,您拥有最基本的控制器,只需ViewIndex操作中返回一个.该控制器是否应该更改为异步,即现在返回IndexCompleted

Lef*_*tyX 8

我最近在读这篇文章.它认为它总结了AsyncController的用途.


Shi*_*ala 6

我知道这是一个老问题,但我很难得到答案,所以我的两分钱.

它就像是说如果我们没有发烧,我还应该吃药吗?如果在Web服务器上看到线程饥饿,则应使用Asynch控制器.IIS Web服务器维护一个线程池.因此,当任何请求进入时,他从线程池中获取线程.如果在给定时刻池中的所有线程都被使用并且请求进入,则该请求进入等待模式.这种情况被称为"线程饥饿".你也可以观看这个youtube视频,其中我已经演示了MVC线程饥饿的样子

http://www.youtube.com/watch?v=wvg13n5V0V0

Web服务器线程使用图

当您将控制器设置为Asynch时,它会利用该线程,生成操作,并将该线程移回线程池,以便可以将其用于进入MVC应用程序的其他请求.操作完成后,他从线程池中拉回线程并显示视图.