Скажем, у нас есть два следующих метода внутри стандартного контроллера mvc.MVC async controller Действия
public class SomeController : Controller
{
public async Task<Response> SomeAction1()
=> await _someService.SomeAsyncMethod();
public Task<Response> SomeAction2()
=> _someService.SomeAsyncMethod();
// SomeAsyncMethod might look like this.
// public async Task<Response> SomeAsyncMethod()
// => await someDbAction();
}
Простой вопрос: выполняет ли базовый контроллер класс как ожидаемый/асинхронный?
Взаимозависимость обоих этих действий делает то же самое?
- Изменить для немного разъяснений. -
Как запросы обрабатываются пул потоков
На веб-сервере, .NET Framework поддерживает пул потоков, которые используются для обслуживания запросов ASP.NET. Когда запрос поступает, поток из пула отправляется для обработки этого запроса. Если запрос обрабатывается синхронно, поток, который обрабатывает запрос, занят во время обработки запроса, и этот поток не может обслуживать другой запрос.
Моя цель - понять, следует ли сопровождать метод, возвращающий задачу, со словом async
. Если ключевое слово отсутствует, оно будет рассматривать метод как синхронный и удерживать поток, хотя SomeAsyncMethod
имеет await
, в котором создается обратный вызов?
С 'async/await' он будет обслуживать ваши запрос, возврат в threadpool для обслуживания других запросов и возобновление действия при завершении операции async. Это означает, что вы можете делать другие вещи после 'async'. Это также означает, что если операция 'async' не удалась, вы можете получить' Exception'.Со вторым, где вы вернете «Задачу», это будет огонь и забудьте действие. Это означает, что вы в основном не заботитесь о результате операции «async». – JohanP