ASP.NET и AJAX потоки - PullRequest
       33

ASP.NET и AJAX потоки

2 голосов
/ 15 февраля 2009

Ссылка на этот вопрос: Является ли ASP.NET многопоточным (как он выполняет запросы) , будет ли это правильной интерпретацией потоков: ASP.NET имеет один рабочий процесс на экземпляр приложения. Он многопоточный, использует собственный пул приложений. Большинство потоков используются для обслуживания (пользовательского) запроса. Каждый запрос (пользовательский сеанс) является одним потоком. Соответствующий ответ может быть другим потоком. Пользовательский запрос приходит как несколько потоков из ISAPI, который сам по себе является многопоточным.

AJAX не является многопоточным. Он использует ту же модель многопоточности, что и не AJAX-сайты. Запрос страницы (ajax или non ajax) может привести к тому, что на сервере будет использоваться несколько потоков, но это все еще один поток на клиенте (браузер использует один поток).

1 Ответ

2 голосов
/ 15 февраля 2009

Короче да. В ASP.NET запрос / ответ обычно обрабатываются в одном потоке ... нет четкого различия между "запросом" и "ответом", это просто ISAPI, передающий информацию запроса в обработчик ASP.NET, и он выполнит соответствующий код и написать вывод. (Хотя существует механизм для переноса запроса из одного потока в другой, когда ASP.NET находится под нагрузкой и должен эффективно использовать доступные потоки. Но я не уверен на 100% в подробностях, когда и почему это происходит. )

JavaScript и AJAX на стороне браузера не являются многопоточными, но некоторым это может показаться так, потому что вызовы AJAX являются асинхронными, а ответы - управляемыми событиями; то есть после отправки запроса на сервер поток JavaScript не блокируется. Можно отправить больше запросов на сервер, и ответы могут возвращаться или не возвращаться в том же порядке, в котором они были отправлены. Однако, поскольку в ядре действительно существует только один поток, если два ответа возвращаются одновременно, один будет блокировать выполнение другого до его завершения.

...