共用方式為


Durable Functions 版本概觀

Durable FunctionsAzure FunctionsAzure WebJobs 的延伸模組,可讓您在無伺服器環境中撰寫具狀態函式。 此擴充功能會為您管理狀態、設定檢查點和重新啟動。 如果您還不熟悉 Durable Functions,請參閱 概觀檔

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

本節介紹新的 Microsoft.Azure.WebJobs.Extensions.DurableTask v3 套件(後續各節中稱為 WebJobs.Extensions.DurableTask),並提供其更新和變更的詳細數據。 此更新只會被視為針對使用 進程內模型之 Durable C# 應用程式的客戶進行重大變更。

備註

Durable Functions .NET 跨進程套件Microsoft.Azure.Functions.Worker.Extensions.DurableTask,會參考Microsoft.Azure.WebJobs.Extensions.DurableTask 作為其基礎元件。 因此,此更新也適用於從 1.2.x 版開始的 Microsoft.Azure.Functions.Worker.Extensions.DurableTask。

新的 Azure 記憶體 SDK

根據預設,Durable Functions 會使用 Azure 記憶體作為記憶體後端,以永久儲存應用程式狀態。 在 WebJobs.Extensions.DurableTask v3 中,Azure 記憶體後端已升級為使用最新版的 Azure 儲存器 SDK: Azure.Data.TablesAzure.Storage.BlobsAzure.Storage.Queues。 新的 Azure 記憶體 SDK 更安全,並提供受控識別的增強支援。 它們也提供更佳的效能、更有效率的數據處理,以及其他最新的記憶體功能。

改善 Azure 記憶體後端的成本效率

Azure 儲存後端中,分割區管理員負責在工作節點之間分配 分割區/控制佇列。 WebJobs.Extensions.DurableTask v3 套件預設會使用分割區管理員 V3,這是利用 Azure 數據表來管理分割區指派而不是 Azure Blob 租用的新設計。 此設計可大幅降低儲存成本,同時讓偵錯更容易。 使用數據分割管理員 V3 時,會在記憶體帳戶中建立名為 Partitions,讓您輕鬆地檢查分割區資訊。

已移除對 Functions v1 執行環境的支援

WebJobs.Extensions.DurableTask v3 不再支援 Azure Functions 運行時間 1.x 版,其支援已排定於 2026 年 9 月結束。 如果您必須使用 Functions 執行時間 v1,請選擇低於 v2.11.0 的 Durable Functions 擴充功能版本。 請記住,當排定的支持終止到來時,Durable Functions 也會停止對於運行環境 v1 的支持。

.NET Framework 更新

WebJobs.Extensions.DurableTask v3 會將 .NET Framework 從 .NET Core 3.1 更新為 .NET 6,提供改良的效能,並增強與新式 .NET 功能和連結庫的相容性。 此更新與未來的 Azure Functions 擴充功能套件組合版本一致。

從 WebJobs.Extensions.DurableTask v2.x 移轉至 v3.x

從 WebJobs.Extensions.DurableTask v2.x 移轉至 v3.x 的設計訴求很簡單,不需要變更程式碼,因為變更位於背景中。 只要更新相依性,即可開始利用 v3.x 中的新功能和改進功能。

備註

WebJobs.Extensions.DurableTask v3 使用最新版的 Azure 儲存 SDK,與 v2 使用的文字編碼方式(UTF-8)相比,v3 採用了不同的文字編碼方式(Base64)。 如果您需要從 v3.x 降級至 v2.x,若要確保回溯相容性,請使用至少 v2.13.5。 對於具有 Microsoft.Azure.Functions.Worker.Extensions.DurableTask 的 .NET 跨進程使用者,如果從 v1.2.x 或更高版本還原,請降級為 v1.1.5 或更高版本。

v2.x 的支持和維護

WebJobs.Extensions.DurableTask v2.x 會繼續接收安全性更新和錯誤修正,以確保現有的應用程式保持安全且穩定。 不過,所有新功能和增強功能都僅新增至 v3.x。 因此,您應該儘快升級至 WebJobs.Extensions.DurableTask v3,以利用最新的功能和持續改善。

Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x 中的新功能

本節說明 2.x 版中新增的 Durable Functions 功能。

備註

本節不適用於 dotnet 隔離背景工作角色中的 Durable Functions。 為此,請參閱 耐久函式隔離程式概觀

持久性實體

在 Durable Functions 2.x 中,我們引進了新的 實體函 式概念。

實體函式會定義讀取和更新小型狀態片段的作業,稱為 永久性實體。 如同控制器函式,實體函式是具有特殊觸發類型的函式,稱為實體觸發。 不同於協調器函式,實體函式沒有任何特定的程式代碼條件約束。 實體函式也會明確管理狀態,而不是透過控制流程隱含表示狀態。

若要深入瞭解,請參閱 永久性實體 一文。

持久性 HTTP

在 Durable Functions 2.x 中,我們引進了新的 Durable HTTP 功能,可讓您:

  • 直接從協調流程函式呼叫 HTTP API(有一些記載的限制)。
  • 實施自動化用戶端 HTTP 202 狀態輪詢。
  • Azure 管理身分識別的內建支援。

若要深入瞭解,請參閱 HTTP 功能 一文。

從 1.x 遷移至 2.x

本節說明如何將您現有的 1.x 版 Durable Functions 移轉至 2.x 版,以利用新功能。

升級擴充套件

在您的專案中安裝最新的 2.x 版 Durable Functions 系結延伸模組。

JavaScript、Python 和 PowerShell

Durable Functions 2.x 可從 Azure Functions 擴充功能套件組合 2.x 版開始提供。

Durable Functions 中的 Python 支援需要 Durable Functions 2.x 或更新版本。

若要更新專案中的延伸模組套件組合版本,請開啟 host.json 並更新 區 extensionBundle 段以使用 4.x 版 ([4.*, 5.0.0))。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

備註

如果在變更擴充功能套件組合版本之後Visual Studio Code 未顯示正確的範本,請執行 開發人員:重載視窗 命令來重載視窗(Windows 和 Linux 上的 Ctrl+R 、macOS 上的 Command+R )。

爪哇島

Durable Functions 2.x 可從 Azure Functions 擴充功能套件組合 4.x 版開始提供。 您必須使用 Azure Functions 4.0 執行時間來執行 Java 函式。

若要更新專案中的延伸模組套件組合版本,請開啟 host.json 並更新 區 extensionBundle 段以使用 4.x 版 ([4.*, 5.0.0))。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

。NET

更新您的 .NET 專案,以使用最新版的 Durable Functions 系結延伸模組

如需詳細資訊,請參閱 註冊 Azure Functions 系結延伸模組

更新您的程式碼

Durable Functions 2.x 引進數項重大且有破壞性的變更。 Durable Functions 1.x 應用程式與 Durable Functions 2.x 不相容,不需要變更程序代碼。 本節列出您在將 1.x 版函式升級至 2.x 時必須進行的一些變更。

Host.json 結構描述

Durable Functions 2.x 使用新的 host.json 架構。 1.x 的主要變更包括:

  • "storageProvider" (和 "azureStorage" 子區段)用於儲存特定組態。
  • "tracing" 用於追蹤和記錄設定。
  • "notifications" 事件網格通知設定(和"eventGrid" 子區段)。

如需詳細資訊 ,請參閱 Durable Functions host.json 參考檔

預設工作中樞名稱變更

在 1.x 版中,如果未在 host.json中指定工作中樞名稱,則預設為 “DurableFunctionsHub”。 在 2.x 版中,預設工作中樞名稱現在衍生自函式應用程式的名稱。 因此,如果您在升級至 2.x 時尚未指定工作中樞名稱,您的程式代碼將會以新的工作中樞運作,而且所有實時協調流程將不再有應用程式處理它們。 若要解決此問題,您可以將工作中樞名稱明確設定為 「DurableFunctionsHub」 的 v1.x 預設值,也可以遵循 我們的零停機時間部署指引 ,以取得如何處理即時協調流程重大變更的詳細數據。

公用介面變更 (僅限.NET)

在 1.x 版中,Durable Functions 所支援的各種 內容 物件都有抽象基類,用於單元測試。 作為 Durable Functions 2.x 的一部分,這些抽象基類會取代為介面。

下表代表主要變更:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClientIDurableClient
DurableOrchestrationContextDurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContextDurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

在抽象基類包含虛擬方法的情況下,這些虛擬方法已由 中 DurableContextExtensions定義的擴充方法取代。

function.json 變更

在 Durable Functions 1.x 中,協調流程用戶端系結會使用 typeorchestrationClient。 2.x 版會改用 durableClient

引發事件變更

在 Durable Functions 1.x 中,呼叫 引發事件 API 並指定不存在的實例會導致靜默失敗。 從 2.x 開始,將事件引發至不存在的協調流程會導致例外狀況。