Async
особенно полезен в сетевых сценариях, поскольку обмен данными между серверами редко происходит без задержек.Выполнение запроса к другому веб-серверу (другому уровню, стороннему REST-сервису) или даже запрос к базе данных обычно выполняются с помощью блокирующих вызовов, которые не позволяют текущему потоку выполнять какую-либо работу до завершения удаленного вызова.Благодаря возможности await
удаленного вызова ваш текущий поток освобождается для обработки других запросов, уменьшая нагрузку на память (IIS использует 256 КБ стекового пространства на поток) и увеличивая потенциальные нагрузки (больше параллельных задач может выполняться до того, как вы закончитепотоков).
Большая часть базовой сантехники ASP.NET использует IHttpHandler
вместо IHttpAsyncHandler
, что означает, что она предполагает поведение блокировки, но в ASP.NET возможно использование асинхронности.