异步编程实战:在 .NET 8 ASP.NET Core Web API 中使用 async/await
作者:xiaoxin.gao · 2025-06-26 · 阅读时间:4分钟
.NET 8 async await 教程
ASP.NET Core 异步 编程
EF Core 异步 方法 ToListAsync
Web API 性能 优化
如何在 ASP.NET Core 中使用 async await
异步 CRUD 操作
引言:为何需要异步? 在现代应用中,数据库调用 和 网络请求 往往是最慢的操作,就像计算机世界里的“乌龟”。即 […]
引言:为何需要异步?
在现代应用中,数据库调用 和 网络请求 往往是最慢的操作,就像计算机世界里的“乌龟”。即使不断堆硬件,也无法彻底解决根本问题。

借助 async/await,我们可以在等待慢操作时,让服务器同时处理其他任务,从而大幅提高吞吐量。
一、async/await 概念概览
-
同步 vs 异步
- 同步:代码按顺序执行,遇到耗时操作就阻塞。
- 异步:可以在等待耗时操作时,切换去执行其他代码,让服务器保持高效。

-
核心关键词
async:仅标记方法为异步,供开发者阅读,无实际功能。Task:异步方法的返回类型,用来承载执行结果。await:让方法在此处“异步挂起”,等待内部耗时操作完成后再继续。

二、将同步方法改为异步方法
我们以 GetStocks(List 端点)为例,演示如何改造:
// 原同步方法:
// public ActionResult<IEnumerable<Stock>> GetStocks() =>
// _context.Stocks.ToList();
// 改造后:
[HttpGet]
public async Task<ActionResult<IEnumerable<Stock>>> GetStocksAsync()
{
var stocks = await _context.Stocks.ToListAsync();
return stocks;
}
- 在方法名后加上
Async后缀并声明async。

- 将返回类型改为
Task。 - 在原来访问数据库的调用后添加
await,并使用 EF Core 的异步版本,如ToListAsync()。

三、Detail 端点与其他 CRUD 操作
同样思路,用异步版本替换同步调用:
[HttpGet("{id}")]
public async Task<ActionResult<Stock>> GetStockAsync(int id)
{
var stock = await _context.Stocks.FindAsync(id);
if (stock == null)
return NotFound();
return stock;
}
- 使用
FindAsync而非Find,并在前面加await。

其他操作(POST/PUT):
[HttpPost]
public async Task<ActionResult<Stock>> CreateStockAsync(Stock stock)
{
_context.Stocks.Add(stock);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetStockAsync), new { id = stock.Id }, stock);
}
- 数据库写操作(
SaveChangesAsync)也需await。
注意 DELETE 操作:
Remove 方法本身是同步的,不要在其上使用 await,只需对 SaveChangesAsync 添加 await 即可。

四、性能验证与测试
- 运行项目后,使用 Swagger UI 调用异步端点。
- 对比同步与异步调用响应时间,你会发现异步版本能明显减轻服务器阻塞。

- 在高并发场景下,异步模式能大幅提升吞吐量。
小结与下一步
- 理解了
async、Task与await的作用及原理。 - 掌握了在 Controllers 中将同步 CRUD 方法改为异步方法的流程。
- 在实际项目中,建议优先对所有数据库和网络调用使用异步 API,以获得更好的性能和可扩展性。
下一步可探索:异步流(IAsyncEnumerable)、并发限制 与 CancellationToken 等高级异步特性。祝编码顺利、高效!
原文引自YouTube视频:https://www.youtube.com/watch?v=Ao2-wILGkPU
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- api 认证与授权的最佳实践
- 什么是GraphRAG
- 如何获取 Notion 开放平台 API Key 密钥(分步指南)
- DeepSeek-R1 调用 MCP 天气API服务教程:MCP 客户端与服务端入门
- 旅游供应商的Travel Booking APIs [Onix概览]
- 使用 Web Share API 实现图片分享
- 学习与设计rest api的顶级资源
- 十大企业级 API 管理工具全景指南
- Meta×Google 云计算协议:2025 多云/混合云 API 极速落地 AI 出海成本降 40%
- Kimi Chat API入门指南:从注册到实现智能对话
- 5种最佳API认证方法,显著提升…
- API接口重试的8种方法