异步控制器和ASP.NET线程处理

时间:2013-04-12 09:24:35

标签: asp.net-mvc multithreading wcf asynchronous

我有一个带web层的web应用程序是一个ASP.NET MVC 3 Web应用程序,服务层是WCF,数据库是MSSQL

在本文中:http://blogs.msdn.com/b/tmarq/archive/2010/04/14/performing-asynchronous-work-or-tasks-in-asp-net-applications.aspx,它提到我应该进行异步处理“当切换线程的好处加重上下文切换的成本。”,“例如,如果您向远程服务器发出异步Web服务请求

这是否意味着,在每个请求中,我都应尽可能多地尝试使用异步处理(在ASP.NET MVC中我假设它是异步控制器而不是ASP.NET中的PageAsyncTask,如果我错了,请纠正我)每当调用WCF服务时(或者如果我不使用WCF服务,那么每当我调用数据库时)都要增加服务器的吞吐量,增加服务器一次可以处理的请求数量?

另一个有点相关的问题:有没有人知道或者可以指向一篇文章,解释从Web层连接到WCF时的连接限制?我听说WCF一次限制为5个并发连接,但无法确认。如果它是5个并发连接,那么即使我增加了Web层的吞吐量,也意味着瓶颈在WCF中?

非常感谢

1 个答案:

答案 0 :(得分:2)

  

这是否意味着,在每个请求中,我都应尽可能多地尝试使用异步处理

只有在您进行I / O操作(远程HTTP调用,如WCF服务调用,数据库调用......)时才能执行此操作。但是,只有在执行了大量的负载测试并确定同步调用是您的应用程序的瓶颈之后才应该这样做,以防您有如此高的处理要求。在大多数情况下,异步代码的复杂性以及非常难以发现错误的风险大于优势。

  

是否有人知道或可以指向一篇文章,解释从Web层连接到WCF时的连接限制?

我不知道存在这样的限制。