使用 Azure 入口網站建立 Durable Functions
NuGet 套件 Microsoft.Azure.WebJobs.Extensions.DurableTask 中提供 Azure Functions 的 Durable Functions 擴充。 此延伸模組必須安裝在您的函式應用程式中。 本文說明如何安裝此套件,以便您可以在 Azure 入口網站中開發長期函式。
注意
- 如果您正在使用 C# 開發長期函式,則應考慮 Visual Studio 2019 開發。
- 如果您正在使用 JavaScript 開發長期函式,則應考慮 Visual Studio Code 開發。
建立函式應用程式
您必須擁有函式應用程式以便主控任何函式的執行。 函式應用程式可讓您將多個函式群組為邏輯單位,方便管理、部署、調整和共用資源。 您可以建立 .NET 或 JavaScript 應用程式。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。
在 [新增] 頁面中,選取 [計算]>[函數應用程式]。
在 [選取主機選項] 下,選取 [使用量]>[選取],在預設的 [使用量] 方案中建立您的應用程式。 在此無伺服器裝載選項中,您只需支付函數執行的時間。 進階方案也提供動態調整。 在 App Service 方案中執行時,您必須管理函式應用程式的調整。
在 [基本] 頁面中,使用下表中指定的函式應用程式設定。
設定 建議的值 描述 訂用帳戶 您的訂用帳戶 用於建立新函數應用程式的訂用帳戶。 資源群組 myResourceGroup 要在其中建立函數應用程式的新資源群組名稱。 您應該建立新的資源群組,因為在現有的資源群組中建立新的函數應用程式時,存在已知的限制。 函數應用程式名稱 全域唯一的名稱 用以識別新函式應用程式的名稱。 有效的字元是 a-z
(不區分大小寫)、0-9
和-
。執行階段堆疊 慣用語言 選擇支援您慣用函式程式設計語言的執行階段。 入口網站內編輯僅適用於 JavaScript、PowerShell、Python、TypeScript 和 C# 指令碼。
若要建立支援入口網站內編輯的 C# 指令碼應用程式,您必須選擇支援內含式模型的執行階段版本。
C# 類別庫和 Java 函式必須在本機開發。版本 版本號碼 選擇已安裝的執行階段版本。 區域 慣用區域 選取的區域應靠近您或靠近函式能夠存取的其他服務。 作業系統 Windows 系統會根據執行階段堆疊選項預先選取作業系統,但您可以視需要變更設定。 入口網站內編輯僅在 Windows 上提供支援。 接受其餘索引標籤中的預設選項,包括在 [儲存體] 索引標籤上建立新儲存體帳戶的默認行為,以及在 [監視] 索引標籤上建立新的 Application Insights 執行個體。您也可以選擇使用現有的儲存體帳戶或 Application Insights 執行個體。
選取 [檢閱 + 建立] 以檢閱所選的應用程式設定,然後選取 [建立] 來佈建和部署函數應用程式。
選取入口網站右上角的 [通知] 圖示,查看是否有 [部署成功] 訊息。
選取 [前往資源],以檢視您新的函式應用程式。 您也可以選取 [釘選到儀表板]。 釘選可讓您更輕鬆地從儀表板返回此函式應用程式資源。
根據預設,所建立的函式應用程式會使用 2.x 版的 Azure Functions 執行階段。 Durable Functions 擴充功能適用於以 C# 撰寫的 Azure Functions 執行階段的 1.x 和 2.x 版本,以及以 JavaScript 撰寫的 2.x 版本。 但是,無論選擇的語言為何,範本僅在以執行階段 2.x 版本為目標時才可以使用。
安裝 Durable Functions npm 套件 (僅限 JavaScript)
如果您要建立 JavaScript Durable Functions,您必須安裝 durable-functions
npm 套件:
從函式應用程式的頁面,選取左窗格中 [開發工具] 之下的 [進階工具]。
在 [進階工具] 頁面中,選取 [執行]。
在 Kudu 主控台中,選取 [偵錯主控台],然後選取 [CMD]。
函式應用程式的檔案目錄結構應該會顯示。 瀏覽至
site/wwwroot
資料夾。 從這裡,您可以將package.json
檔案拖放到檔案目錄視窗來上傳該檔案。 範例package.json
如下:{ "dependencies": { "durable-functions": "^1.3.1" } }
package.json
上傳之後,請從 Kudu 遠端執行主控台執行npm install
命令。
建立協調器函式
在您的函式應用程式中,從左側窗格選取 [函式],然後從頂端功能表選取 [新增]。
在 [新函式] 的搜尋欄位中,輸入
durable
,然後選擇 [Durable Functions HTTP 入門] 範本。針對 [新函式] 名稱,輸入
HttpStart
,然後選取 [建立函式]。建立的函式用來啟動協調流程。
在函式應用程式中建立另一個函式,這次是使用 Durable Functions 協調器範本。 將新的協調流程函式命名為
HelloSequence
。使用 Durable Functions 活動範本建立名為
Hello
的第三個函式。
測試長期函式的協調流程
回到 HttpStart 函式,選擇 [取得函式 URL],然後選取 [複製到剪貼簿] 圖示以複製該 URL。 您可以使用此 URL 來啟動 HelloSequence 函式。
使用安全的 HTTP 測試工具,將 HTTP POST 要求傳送至 URL 端點。 此範例是 cURL 命令,會將 POST 要求傳送至 durable 函式:
curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
在此範例中,
{your-function-app-name}
是函數應用程式名稱的網域,而{functionName}
是 HelloSequence 協調器函數。 回應訊息會包含一組可用於監視和管理執行的 URI 端點,如下列範例所示︰{ "id":"10585834a930427195479de25e0b952d", "statusQueryGetUri":"https://...", "sendEventPostUri":"https://...", "terminatePostUri":"https://...", "rewindPostUri":"https://..." }
請務必選擇可保護數據的 HTTP 測試工具。 如需詳細資訊,請參閱 HTTP 測試工具。
呼叫
statusQueryGetUri
端點 URI,您將看到長期函式目前的狀態,看起來可能如下範例:{ "runtimeStatus": "Running", "input": null, "output": null, "createdTime": "2017-12-01T05:37:33Z", "lastUpdatedTime": "2017-12-01T05:37:36Z" }
繼續呼叫
statusQueryGetUri
端點,直到狀態變成 [已完成],您會看到如下列範例所示的回應:{ "runtimeStatus": "Completed", "input": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2017-12-01T05:38:22Z", "lastUpdatedTime": "2017-12-01T05:38:28Z" }
您的第一個長期函式現在已在 Azure 中運作。