我想知道Web應用程序中的併發性是如何工作的。我讀過幾篇文章,並且我的理解是HttpApplication的多個實例將同時工作。現在,我創建了一個簡單的Web應用程序來測試併發,把下面給Global.asax中:IIS,Asp.NET管道和併發
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中使用相同的代碼進行測試,並得到相同的結果。
這是怎麼回事?爲什麼這些請求不是平行的?
編輯:我把我的理解主要是兩篇文章:「如果多個請求針對同一應用程序同時到達,多一個HttpApplication對象將使用」
http://msdn.microsoft.com/en-us/magazine/cc188942.aspx說
和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
謝謝凱夫,看到我的答案也...我認爲,奇怪的事情正在發生! – mmiika 2008-11-21 06:35:38