Подтвердить что ты не робот

ASP.NET MVC4 Async controller - зачем использовать?

Я пытаюсь понять, почему и когда следует использовать действие контроллера async. В конце концов, когда я использую await в нем, он будет ждать завершения операции, чтобы вернуть View.

Например

public async Task<ActionResult> TryMe()
{
   await SomeActionAsync();
   return View();
}

В этом случае, если я использую async или не используя async, действие будет выполняться в одно и то же время.

Если я не пытаюсь запустить не менее 2 медленных операций (которые не зависят друг от друга) параллельно, я не вижу причин использовать действие контроллера async.

Пожалуйста, поправьте меня, если я ошибаюсь. Я думаю, что здесь что-то не хватает.

4b9b3361

Ответ 1

Точка ключевого слова await позволяет работать с асинхронными операциями, не записывая уродливые обратные вызовы.

Использование асинхронных операций помогает избежать потерь потоков потоков потоков.

Объяснение

ASP.Net запускает весь ваш код в потоках из пула управляемых потоков.
Если у вас слишком много медленных запросов, запущенных сразу, пул потоков будет заполнен, а новые запросы должны будут ждать, пока поток станет свободным.

Часто, однако, ваши запросы медленны не потому, что они выполняют вычисление (вычисление), а потому, что они ждут чего-то другого, такого как жесткий диск, сервер базы данных или внешний веб-сервис (IO - или связанный с сетью).

Нет смысла тратить драгоценный поток ниток на простоту, чтобы ждать завершения внешней операции.

Асинхронные операции позволяют запускать операцию, возвращать поток в пул, а затем "просыпаться" в другом потоке пула потоков, когда операция завершена.
Пока операция выполняется, потоки не потребляются.