適用於 .NET 函式的執行模型有兩個:
| 執行模型 | 描述 |
|---|---|
| 隔離式背景工作角色模型 | 您的函數程式碼在個別的 .NET 背景工作處理序中執行。 搭配支援的 .NET 和 .NET Framework 版本使用。 若要深入瞭解,請參閱 隔離背景工作模型中執行 C# Azure Functions 的指南。 |
| 內含式模型 | 您的函數程式碼執行的處理序與 Functions 主機處理序相同。 僅支援長期支援 (LTS) 的 .NET 版本。 若要深入瞭解,請參閱 使用 Azure Functions 開發 C# 類別庫函式。 |
重要事項
內含式模型支援將於 2026 年 11 月 10 日結束。 強烈建議您將應用程式移轉至隔離式背景工作角色模型,以取得完整支援。
本文說明這兩個模型之間功能與行為差異的目前狀態。 若要從內含式模型移轉至隔離式背景工作角色模型,請參閱將 .NET 應用程式從內含式模型移轉至隔離式背景工作角色模型。
執行模式比較表
使用下表來比較兩個模型之間的功能和功能差異:
| 功能/行為 | 隔離式背景工作角色模型 | 內含式模型 3 |
|---|---|---|
| 支援的 .NET 版本 | 長期支援 (LTS) 版本、 標準期限支援 (STS) 版本、 .NET Framework |
長期支援 (LTS) 版本,以 .NET 8 結尾 |
| 核心套件 |
Microsoft.Azure.Functions.Worker Microsoft.Azure.Functions.Worker.Sdk |
Microsoft.NET.Sdk.Functions |
| 繫結延伸模組套件 | Microsoft.Azure.Functions.Worker.Extensions.* | Microsoft.Azure.WebJobs.Extensions.* |
| Durable Functions | 支援 | 支援 |
| 繫結所公開的模型類型 | 簡單型別 JSON 可序列化類型 陣列/列舉 服務 SDK 型別4 |
簡單型別 JSON 可序列化型別 陣列/列舉 服務 SDK 型別4 |
| HTTP 觸發程式模型類型 |
Http請求數據 / Http回應資料 HttpRequest / IActionResult (使用 ASP.NET Core 整合)5 |
HttpRequest / IActionResult5 HttpRequest訊息 / Http回應訊息 |
| 輸出繫結互動 | 使用下列方式傳回擴充模型中的值: - 單一或多個輸出 - 輸出陣列 |
傳回值 (僅單一輸出)、out 參數、IAsyncCollector |
| 命令式繫結1 | 不支援 - 改為直接使用 SDK 型別 | 支援 |
| 相依性插入 | 支援 (配合 .NET 生態系統改善的模型) | 支援 |
| 中介軟體 | 支援 | 不支援 |
| 記錄 |
ILogger<T>
/
ILogger從 FunctionContext 或使用相依性插入取得 |
ILogger 傳遞至函式透過使用 ILogger<T>進行 |
| Application Insights 相依性 | 支援 | 支援 |
| 取消權杖 | 支援 | 支援 |
| 冷啟動時間2 | 可設定最佳化 | 已最佳化 |
| ReadyToRun | 支援 | 支援 |
| [彈性消費] | 支援 | 不支援 |
| .NET Aspire | 預覽 | 不支援 |
1 當您需要使用在執行階段判斷的參數來與服務互動時,建議直接使用對應的服務 SDK,而非使用命令式繫結。 SDK 較為簡潔、適用於更多案例,並具有錯誤處理和偵錯用途的優點。 這項建議適用於這兩個模型。
2 由於預覽架構的 Just-In-Time 載入,使用某些預覽版本的 .NET 時,可能會對 Windows 上的冷啟動時間造成額外影響。 此影響同時適用於內含式和跨處理序模型,但在不同版本之間進行比較時會很明顯。 Linux 方案中不會出現此預覽版本的延遲。
3 C# 指令碼函式也會執行內含式,並使用與內含式類別庫函式相同的程式庫。 如需詳細資訊,請參閱 Azure Functions C# 指令碼 (.csx) 開發人員參考。
4 服務 SDK 型別包含來自適用於 .NET 的 Azure SDK 的型表,例如 BlobClient。
.NET Framework 不支援 5 ASP.NET 核心類型。
支援的版本
Functions 執行階段的版本支援 .NET 特定版本。 若要深入瞭解 Functions 版本,請參閱 Azure Functions 執行階段版本概觀。 版本支援也取決於函式執行同處理序或隔離式背景工作處理序。
附註
若要瞭解如何變更函數應用程式所使用的 Functions 執行階段版本,請參閱檢視及更新目前的執行階段版本。
下表顯示可與 Functions 特定版本搭配使用的最高層級 .NET 或 .NET Framework。
| Functions 執行階段版本 | 隔離式背景工作角色模型 | 內含式模型4 |
|---|---|---|
| 函數 4.x1 | .NET 105 .NET 9.0 .NET 8.0 .NET Framework 4.82 |
.NET 8.0 |
| 函數 1.x3 | 不適用 | .NET Framework 4.8 |
1 .NET 6 之前在這兩種模型上都受到支援,但已於 2024 年 11 月 12 日終止正式支援。 .NET 7 先前在隔離式背景工作角色模型上受到支援,但已於 2024 年 5 月 14 日終止正式支援。
2 組建流程也需要使用 .NET SDK。
3 1.x 版的 Azure Functions 執行階段於 2026 年 9 月 14 日結束支援。 如需詳細資訊,請參閱此支援公告。 如需持續的完整支援,您應該將應用程式移轉至 4.x 版。
4 對內含式模型的支援於 2026 年 11 月 10 日結束。 如需詳細資訊,請參閱此支援公告。 如需持續的完整支援,您應該將應用程式移轉至隔離式背景工作角色模型。
5 你不能在 Linux 的 Consumption 方案中執行 .NET 10 應用程式。 若要在 Linux 上執行,您應該改用 彈性消費方案。
如需有關 Azure Functions 版本的最新新聞,包括移除特定舊版次要版本,請持續關注 Azure App Service 公告。