Я думаю, вы не понимаете, что такое на самом деле async
методы контроллера.async
и await
не влияют на сам API, только на реализацию.
public async Task<IHttpActionResult> GetUserAsync(Guid id, [FromUri] string expand=null)
Когда вы реализуете обработчик действий асинхронно, это означает, что платформа Web API может использовать поток, обрабатывающий запрос длядругая работа, в то время как это await
результат асинхронных операций (например, запрос вашей базы данных).Это помогает масштабировать ваш сервис, увеличивая нагрузку, которую он может обрабатывать на том же оборудовании.
Это не оказывает никакого влияния на абонента .Для вашего HTTP-клиента запрос выглядит одинаково независимо от того, обрабатывается он синхронно или нет.По-прежнему поступает HTTP-запрос и HTTP-ответ возвращается по тому же соединению с сокетом.
Теперь, если ваш клиент использует асинхронные вызовы вашего API, он может отказаться от потока, который выполняет вызов.пока ваш сервис обрабатывает запрос и выдает ответ.Это может быть полезно, если клиент сам является службой HTTP или приложением с насосом сообщений.
Но в любом случае он вызвал бы API на той же конечной точке независимо от того, реализован ли API с использованием методов async
или нет.