假设我们有一个调用存储过程的 aspx 网页,15 分钟后在 GridView 上呈现数据表。在我的假设中,我没有运行可能并行发生的 4 个 asych——只是一个长的数据库过程。
在调用堆栈上至少有 3 个地方,微软让我尝试以异步方式做事,包括异步页面和 Web 方法、异步 ADO.NET 调用以及异步关键字和异步委托之类的东西。
例如:
[WebMethod]
public IAsyncResult BeginLengthyProcedure( AsyncCallback cb, object s) {...}
[WebMethod]
public string EndLengthyProcedure(IAsyncResult call) {...}
(参考http://msdn.microsoft.com/en-us/library/aa480516.aspx)
我的心理模型是 IIS 一次只能有这么多“事物(线程?)”来处理请求,并且如果您使用异步技术,页面将不会耗尽可用于接收请求的线程池。我认为在异步方法运行时,它会消耗操作系统线程,并且可能仍然会因活动而破坏服务器,但 IIS 会假定它不需要计入它将处理的最大请求数,因此应用程序保持响应。
在此处对这个问题的评论中,我对异步保存是否以及哪些资源感到困惑。我从那次讨论中得到的印象是,没有任何带有关键字“asynch”的技术可以保存任何带有关键字“thread”或“resource”的资源。是否有一些资源被释放用于其他请求,也许我只是没有它的名称?
B 部分。 这个限制是什么,它是高到只有每毫秒 100 次强烈的请求才会达到这个限制,还是足够低到每个运行 15 分钟同步页面的几十个用户可以达到这个限制?