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 アプリのルートを参照すると、それらが同時に開始および停止することを期待していました。しかし、そうではないようです。2 番目のタブの開始時間は、最初の時間の終了時間と同じです。次に、この同じコードを httpmodule または default.aspx page_load に配置してテストしたところ、同じ結果が得られました。
ここで何が起こっているのですか?リクエストが並行して処理されないのはなぜですか?
編集:私は主に2つの記事に理解を置いています:
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