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

时间:2011-02-08 09:55:50

标签: asp.net-mvc asynchronous controller scaling

将ASP.NET MVC同步控制器(Controller)更改为异步控制器(AsyncController)似乎无关紧要,但是什么时候应该这样做?

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

以最简单的例子:静态html页面。因此,您拥有最基本的控制器,只需从View操作返回Index。此控制器是否应更改为异步,即现在从IndexCompleted返回?

2 个答案:

答案 0 :(得分:8)

我最近正在阅读article。它认为它总结了AsyncController的用途。

答案 1 :(得分:6)

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

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

  

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

Web Server Thread Use Diagram

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

相关问题