Мне интересно, как на самом деле работает параллелизм в веб-приложении. Я прочитал несколько статей, и, насколько я понимаю, несколько экземпляров HttpApplication будут работать одновременно. Теперь я создал простое веб-приложение для проверки одновременности и поместил в 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();
}
Я ожидал, что если я зайду в корневой каталог веб-приложения на нескольких вкладках браузера одновременно, они начнут и остановятся одновременно. Однако, похоже, что нет. Время начала второй вкладки совпадает с временем окончания первого раза. Затем я проверил наличие этого же кода в 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 call
Возможно, я что-то совершенно не понимаю ... но что?
http://www.code -magazine.com / article.aspx? Quickid = 0511061 & страница = 5