Зачем использовать async / await в действии контроллера в Asp. net core web api - PullRequest
0 голосов
/ 17 июня 2020

Действие в контроллере уже находится в другом потоке, почему нам все еще нужно использовать async / await? Я смотрел: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio#examine -the-posttodoitem-create-method Я вижу, что у него есть действие в этом контроллере: [HttpPost] publi c asyn c Task> PostTodoItem (TodoItem todoItem)

Итак, я провел несколько тестов на своем собственном контроллере, я вижу, когда я отправляю запрос из моего браузера, сторона сервера всегда создает новый рабочий поток для обработки запроса, поэтому у меня были сомнения : если контроллер уже обрабатывает запрос в другом потоке, почему я должен использовать async / await? Поскольку запрос обрабатывается в новом потоке, я не думаю, что он заблокирует любой другой запрос.

1 Ответ

7 голосов
/ 17 июня 2020

asyn c и шаблон ожидания касается масштабируемости. Зачем блокировать поток, если можно использовать порт завершения ввода-вывода? Это так просто.

Шаблон asyn c и ожидания разгружает работу (термин используется свободно) и позволяет пулу потоков потенциально восстановить поток и использовать его в другом месте, пока вы Работа ввода-вывода завершена.

Возможно, сейчас вы не заметите разницы, но когда вы начнете масштабировать веб-сайт до тысяч одновременных заданий, эффективное использование ресурсов станет иметь большое значение. Один из тех инструментов, которые вы можете использовать, это ... asyn c и шаблон ожидания .

Примечание : это Simpleisti c ответ на простой c вопрос о сложной и нюансированной топи c. Без написания диссертации о внутренней работе языковой функции и ее использовании, это, вероятно, хорошее место для вас, чтобы начать исследовать asyn c и ждать, чтобы ответить на некоторые из наиболее распространенных вопросов для себя. веселиться и получить чувство достижения :)

...