Durable Functions 版本概觀
Durable Functions 是 Azure Functions 和 Azure WebJobs 的擴充功能,可讓您在無伺服器環境中撰寫具狀態函式。 此擴充功能會為您管理狀態、設定檢查點和重新啟動。 如果您還不熟悉 Durable Functions,請參閱概觀文件。
2.x 中的新功能
本節說明 2.x 版中新增的 Durable Functions 功能。
注意
本節不適用於 dotnet 隔離背景工作角色中的 Durable Functions。 如需了解,請參閱耐久函式隔離程序概觀。
持久性實體
在 Durable Functions 2.x 中,我們引進了新的實體函式概念。
實體函式會定義用於讀取和更新一小段狀態 (稱為「持久性實體」) 的作業。 與協調器函式一樣,實體函式是具有特殊觸發類型的函式,實體觸發程序。 不同於協調器函數,實體函數沒有任何特定的程式碼限制。 實體函式還明確管理狀態,而不是透過控制流程隱含表示狀態。
若要深入了解,請參閱持久性實體一文。
耐久 HTTP
在 Durable Functions 2.x 中,我們引進了新的耐久 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) 來重載視窗。
Java
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 時尚未指定工作中樞名稱,您的程式碼將會搭配新的工作中樞運作,而且所有執行中的協調流程將不再有應用程式處理它們。 若要解決此問題,您可以將工作中樞名稱明確設定為 v1.x 預設值 "DurableFunctionsHub",或者可以遵循零停機部署指引,以取得如何處理進行中協調流程重大變更的詳細資料。
公用介面變更 (僅限 .NET)
在 1.x 版中,Durable Functions 支援的各種 context 物件都有抽象基底類別可用於單元測試。 在 Durable Functions 2.x 中,這些抽象基底類別由介面取代。
下表表示主要變更:
1.x | 2.x |
---|---|
DurableOrchestrationClientBase |
IDurableOrchestrationClient 或 IDurableClient |
DurableOrchestrationContext 或 DurableOrchestrationContextBase |
IDurableOrchestrationContext |
DurableActivityContext 或 DurableActivityContextBase |
IDurableActivityContext |
OrchestrationClientAttribute |
DurableClientAttribute |
在抽象基底類別包含虛擬方法的情況下,這些虛擬方法已由 DurableContextExtensions
中定義的延伸方法所取代。
function.json 變更
在 Durable Functions 1.x 中,協調流程用戶端繫結使用的 type
為 orchestrationClient
。 2.x 版改用 durableClient
。
引發事件變更
在 Durable Functions 1.x 中,呼叫引發事件 API 並指定不存在的執行個體會導致無訊息失敗。 從 2.x 開始,將事件引發至不存在的協調流程會導致例外狀況。