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