借助 async/await,我們可以在等待慢操作時,讓服務器同時處理其他任務,從而大幅提高吞吐量。


一、async/await 概念概覽

  1. 同步 vs 異步

  1. 核心關鍵詞


二、將同步方法改為異步方法

我們以 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;
}
  1. 在方法名后加上 Async 后綴并聲明 async

  1. 將返回類型改為 Task
  2. 在原來訪問數據庫的調用后添加 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;
}

其他操作(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);
}

注意 DELETE 操作
Remove 方法本身是同步的,不要在其上使用 await,只需對 SaveChangesAsync 添加 await 即可。


四、性能驗證與測試

  1. 運行項目后,使用 Swagger UI 調用異步端點。
  2. 對比同步與異步調用響應時間,你會發現異步版本能明顯減輕服務器阻塞。

  1. 在高并發場景下,異步模式能大幅提升吞吐量。

小結與下一步

下一步可探索:異步流(IAsyncEnumerable)并發限制CancellationToken 等高級異步特性。祝編碼順利、高效!

原文引自YouTube視頻:https://www.youtube.com/watch?v=Ao2-wILGkPU

上一篇:

.NET 8 ASP.NET Core Web API 實戰:構建與測試 API Controllers

下一篇:

REST API 基礎:定義、示例及使用方法
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費