首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 非同步並行優化:async/await 實現多獨立查詢並行執行

     編輯:關於ASP.NET

在 Controller Action 中發現 7 個無相依性的服務呼叫,透過 async/await 並行化可大幅提升效能。

關鍵原則

  1. 目標方法必須為 async
  2. 並行期間不可使用 await(否則會序列化)

實作模式

步驟 1:建立非同步包裝方法

public static async Task<string> GetTagAsync(int blogId, int entryId) {
    return await Task.Run(() => GetTag(blogId, entryId));
}
public static async Task<string> GetCateListAsync(string blogUrl, int blogId, int entryId) {
    return await Task.Run(() => GetCateList(blogUrl, blogId, entryId));
}

步驟 2:啟動並行任務、稍後等待結果

var tagsTask = TagService.GetTagAsync(blogId, postId);
var categoriesTask = BlogCategoryService.GetCateListAsync(blogUrl, blogId, postId);
// ... 其他任務啟動
var tags = await tagsTask;
var categories = await categoriesTask;
// ... 取得其他結果

所有任務同時啟動,總耗時約等於最慢單一任務,而非總和。不修改原有同步方法、不深入資料存取層,以最小改動實現並行化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved