为什么在 Asp.net core web api 中的控制器中的操作中使用 async/await

Jin*_*ger 0 c# async-await asp.net-core-webapi

Controller中的Action已经在不同的线程中了,为什么还需要使用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-方法 我看到它在这个控制器中有一个动作:[HttpPost] public async Task> PostTodoItem(TodoItem todoItem)

所以,我在自己的控制器中做了一些测试,我看到当我从浏览器发送请求时,服务器端总是创建一个新的工作线程来处理请求,这就是为什么我有疑问:如果控制器已经在不同线程中处理请求,为什么我还要使用 async/await?由于请求是在新线程中处理的,我认为它不会阻止任何其他请求。

AAA*_*ddd 7

异步并等待格局是约可扩展性。当您可以使用 IO 完成端口时,为什么要阻塞线程?就这么简单。

异步伺机模式卸载工作(词松散使用),并允许线程池的潜在恢复线程和其他地方使用它,直到你的IO工作完成。

您现在可能没有注意到差异,但是当您开始将网站扩展到 1000 多个并发作业时,有效地使用资源将开始变得很重要。您可以使用的工具之一是…… async 和 await 模式

注意:这是对一个复杂而微妙的主题的简单问题的简单回答。无需撰写关于语言功能的内部工作原理及其用途的论文,这可能是您开始研究 async 和 await 模式以回答自己一些最常见问题的好地方,您将获得乐趣和收获有成就感:)