【发布时间】:2008-11-21 05:13:03
【问题描述】:
我想知道 Web 应用程序中的并发实际上是如何工作的。我已经阅读了几篇文章,据我了解,HttpApplication 的多个实例将同时工作。现在,我创建了一个简单的 Web 应用程序来测试并发性并将以下内容放入 global.asax:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Response.Write("Request started: " + DateTime.Now);
System.Threading.Thread.Sleep(10000);
Response.Write("<br />");
Response.Write("Request ended: " + DateTime.Now);
Response.End();
}
我预计如果我几乎同时在多个浏览器选项卡中浏览到 Web 应用程序根目录,它们会同时启动和停止。然而,他们似乎没有。第二个标签开始时间与第一个结束时间相同。然后我通过在 httpmodule 或 default.aspx page_load 中使用相同的代码进行测试,得到了相同的结果。
这里发生了什么?为什么不并行处理请求?
编辑:我主要将我的理解放在两篇文章中:
http://msdn.microsoft.com/en-us/magazine/cc188942.aspx 表示“如果针对同一应用程序的多个请求同时到达,将使用多个 HttpApplication 对象。”
http://www.code-magazine.com/article.aspx?quickid=0511061&page=5 有一个 aspx 页面的示例,它基本上完成了我测试的操作,并带有注释“模拟慢速请求,因此我们可以并排查看多个请求”。在 Thread.Sleep 调用旁边
我可能完全误解了某些东西......但是什么?
http://www.code-magazine.com/article.aspx?quickid=0511061&page=5
【问题讨论】:
标签: asp.net iis-7 concurrency pipeline