Мы все знаем знаменитое сообщение в блоге относительно блокировки асинхронного кода Стивеном Клири. В MVC 5 следующий код блокируется при запросе Home/Index
:
public class HomeController : Controller
{
public string Index()
{
var model = AsyncMethod();
return model.Result;
}
private async Task<string> AsyncMethod()
{
await Task.Run(() => Thread.Sleep(2000));
return "Hello";
}
}
Однако тот же самый код не заторможен в веб-приложении MVC Core. Ответ возвращает Hello. Зачем? Поддерживает ли MVC Core несколько потоков одновременно работать в одном контексте запроса? Является ли фраза Не блокировать асинхронный код устаревшей при разработке в MVC Core?