Потоки ASP.NET и AJAX

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

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


person 4thSpace    schedule 15.02.2009    source источник


Ответы (1)


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

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

person Rex M    schedule 15.02.2009