共用方式為


快速入門:建立 C# Durable Functions 應用程式

使用 Durable Functions (Azure Functions 的功能) 在無伺服器環境中撰寫具狀態函式。 Durable Functions 會管理應用程式中的狀態、檢查點和重新啟動。

與 Azure Functions 一樣,Durable Functions 支援 .NET 類別庫函式的兩個處理序模型。 若要深入了解這兩個處理序,請參閱內含式與隔離式背景工作處理序 .NET Azure Functions 之間的差異

在此快速入門中,您將使用 Visual Studio Code 在本機建立及測試 "hello world" Durable Functions 應用程式。 此函數應用程式會協調對其他函式的呼叫並鏈結在一起。 接著,您會在 Azure 中發佈函式程式碼。 您使用的工具可透過 Visual Studio Code Azure Functions 延伸模組取得。

螢幕擷取畫面顯示 Visual Studio Code 中的 Durable Functions 應用程式程式碼。

必要條件

若要完成本快速入門,您需要:

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

建立 Azure Functions 專案

在 Visual Studio Code 中,建立 本機 Azure Functions 專案。

  1. 在 [檢視] 功能表上,選取 [命令選擇區] (或選取 Ctrl+Shift+P)。

  2. 在提示 (>) 中,輸入然後選取 [Azure Functions:建立新專案]

    螢幕擷取畫面顯示建立 Functions 專案的命令。

  3. 選取瀏覽。 在 [選取資料夾] 對話框中,移至要用於您專案的資料夾,然後選擇 [選取]

  4. 在提示中,選取或輸入下列值:

    提示 動作 描述
    為您的函數應用程式專案選取語言 選取 [C#] 建立本機 C# Functions 專案。
    選取版本 選取 [Azure Functions v4] 您只會在尚未安裝 Core Tools 時看到此選項。 Core Tools 會在您第一次執行應用程式時安裝。
    選取 .NET 執行階段 選取 [.NET 8.0 隔離式方案] 建立函式專案,使其可支援在隔離式背景工作處理序和 Azure Functions 執行階段 4.0 中執行的 .NET 8。 如需詳細資訊,請參閱如何設定 Azure Functions 執行階段目標版本
    為專案的第一個函式選取範本 選取 [Durable Functions 協調流程] 建立 Durable Functions 協調流程。
    選擇耐久儲存體類型 選取 [Azure 儲存體] 適用於 Durable Functions 的預設儲存提供者。 如需詳細資訊,請參閱 Durable Functions 儲存提供者
    提供函式名稱 輸入 [HelloOrchestration] 協調流程函式的名稱。
    提供命名空間 輸入 [Company.Function] 所產生類別的命名空間。
    選取您開啟專案的方式 選取 [在目前視窗中開啟] 在您選取的資料夾中開啟 Visual Studio Code。

如果需要建立專案,Visual Studio Code 就會安裝 Azure Functions Core Tools。 其也會在資料夾中建立函式應用程式專案。 此專案包含 host.jsonlocal.settings.json 組態檔。

另一個檔案 (HelloOrchestration.cs) 包含 Durable Functions 應用程式的基本建置組塊:

方法 描述
HelloOrchestration 定義 Durable Functions 應用程式協調流程。 在此情況下,協調流程會啟動、建立清單,然後將三個函式呼叫的結果新增至清單。 完成三個函式呼叫後,它會傳回清單。
SayHello 傳回您好的簡單函數應用程式。 此函式包含要進行協調的商務邏輯。
HelloOrchestration_HttpStart HTTP 觸發的函式,該函式會啟動協調流程執行個體並傳回檢查狀態回應。

如需這些函式的詳細資訊,請參閱 Durable Functions 類型和功能

設定儲存體

您可以使用 Azurite (Azure 儲存體的仿真器) 在本機測試函式。 在 local.settings.json中,將 AzureWebJobsStorage 的值設定為 UseDevelopmentStorage=true,如下列範例所示:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

若要在 Visual Studio Code 中安裝和開始執行 Azurite 延伸模組,請在命令選擇區中輸入 Azurite:開始,然後選取 [Enter]。

您可以針對 Durable Functions 應用程式使用其他儲存體選項。 如需儲存體選項和優點的詳細資訊,請參閱 Durable Functions 儲存提供者

在本機測試函式

Azure Functions Core Tools 提供您在本機開發電腦上執行 Azure Functions 專案的功能。 第一次在 Visual Studio Code 中啟動函式時,系統會提示您安裝這些工具。

  1. 在 Visual Studio Code 的 SayHello 活動函式程式碼中設定中斷點,然後選取 [F5] 以啟動函數應用程式專案。 [終端] 面板會顯示核心工具的輸出。

    注意

    如需有關偵錯的詳細資訊,請參閱 Durable Functions 診斷

    如果訊息找不到作業函式出現,將 Azure Functions Core Tools 安裝更新為最新版本

  2. 在 [終端機] 面板中,複製 HTTP 觸發函式的 URL 端點。

    Azure 本機輸出視窗的螢幕擷取畫面。

  3. 使用 HTTP 測試工具將 HTTP POST 要求傳送至 URL 端點。

    回應是 HTTP 函式的初始結果。 它可讓您知道 Durable Functions 應用程式協調流程已成功啟動。 它還沒顯示協調流程的最終結果。 回應包含一些實用的 URL。

    此時,活動函式中的中斷點應已被點擊,因為協調流程已啟動。 逐步執行以取得協調流程狀態的回應。

  4. 複製 statusQueryGetUri 的 URL 值,並將其貼在瀏覽器的網址列中,然後執行要求。 或者,您也可以繼續使用 HTTP 測試工具來發出 GET 要求。

    此要求會查詢協調流程執行個體的狀態。 您應該會看到執行個體已完成,而且它包含 Durable Functions 應用程式的輸出或結果,如下列範例所示:

    {
        "name":"HelloCities",
        "instanceId":"7f99f9474a6641438e5c7169b7ecb3f2",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello, Seattle!",
        "createdTime":"2023-01-31T18:48:49Z",
        "lastUpdatedTime":"2023-01-31T18:48:56Z"
    }
    

    提示

    了解如何透過中斷點觀察 Durable Functions 應用程式的重新執行行為

  5. 若要在 Visual Studio Code 中停止偵錯,選取 [Shift+F5]。

驗證函式在本機電腦上正確執行之後,就可以將專案發佈到 Azure。

登入 Azure

您必須先登入 Azure 後,才能建立 Azure 資源或發佈應用程式。

  1. 如果您尚未登入,請在 [活動列] 中選取 [Azure] 圖示。 然後在 [資源] 下,選取 [登入 Azure]

    在 Visual Studio Code 中登入 Azure 視窗的螢幕擷取畫面。

    如果您已登入,而且可以看到現有的訂閱,請移至下一節。 如果您尚未擁有 Azure 帳戶,請選取 [建立 Azure 帳戶]。 學生可以選取 [建立 Microsoft Azure 學生版帳戶]

  2. 在瀏覽器中出現提示時,選取您的 [Azure 帳戶],並使用您的 Azure 帳戶認證登入。 如果您建立新的帳戶,可以在帳戶建立之後登入。

  3. 成功登入之後,您可以關閉新的瀏覽器視窗。 屬於您 Azure 帳戶的訂用帳戶會顯示在側邊欄中。

在 Azure 中建立函數應用程式

在此區段中,您會在 Azure 訂用帳戶中建立函式應用程式和相關的資源。 根據預設行為,系統會為您做出許多資源建立決策。 若要進一步控制已建立的資源,您必須改為 使用進階選項來建立函式應用程式。

  1. 在 Visual Studio Code 中,選取 F1 以開啟命令選擇區。 在提示 (>) 中,輸入然後選取 [Azure Functions:在 Azure 中建立函式應用程式]

  2. 依照提示提供下列資訊:

    提示 動作
    選取訂用帳戶 選取要使用的 Azure 訂用帳戶。 當您只有一個訂用帳戶顯示在 [資源] 底下時,就不會看到此提示。
    輸入函數應用程式的全域唯一名稱 輸入在 URL 路徑中有效的名稱。 您輸入的名稱會進行驗證,以確定該名稱在 Azure Functions 中是唯一的。
    選取執行階段堆疊 選取您目前在本機執行的語言版本。
    選取新資源的位置 選取 Azure 區域。 若要獲得較佳的效能,請選取您附近的 [區域]

    在 [Azure:活動記錄] 面板中,Azure 延伸模組會顯示在 Azure 中建立的個別資源狀態。

    顯示 Azure 資源建立記錄的螢幕擷取畫面。

  3. 建立函式應用程式時,在您的 Azure 訂用帳戶中會建立下列相關資源。 資源會根據您為函式應用程式輸入的名稱來命名。

    • 資源群組,這是相關資源的邏輯容器。
    • 標準 Azure 儲存體帳戶,其可維護專案的狀態和其他資訊。
    • 函數應用程式,其提供執行函式程式碼的環境。 函數應用程式可讓您將函式以邏輯單位分組,方便您在相同的主控方案中管理、部署及共用資源。
    • Azure App Service 方案,其定義函式應用程式的基礎主機。
    • 連線至函式應用程式的 Application Insights 執行個體,可追蹤函式在應用程式中的使用情況。

    建立函式應用程式並套用部署套件之後,即會顯示通知。

    提示

    根據預設,系統會根據您為函數應用程式輸入的名稱來建立函數應用程式所需的 Azure 資源。 根據預設,資源會以在相同的新資源群組中的函式應用程式來建立。 如果您想要自訂相關聯資源的名稱或重複使用現有的資源,請使用進階建立選項來發佈專案

將專案部署至 Azure

重要

部署至現有的函數應用程式一律會覆寫該應用程式在 Azure 中的內容。

  1. 在命令選擇區中,輸入並選取 [Azure Functions:部署至函式應用程式]

  2. 選取您剛才建立的函數應用程式。 當系統提示您覆寫先前的部署時,請選取 [部署],將函式程式碼部署至新的函數應用程式資源。

  3. 部署完成時,選取 [檢視輸出] 以檢視建立和部署結果,包括您所建立的 Azure 資源。 如果您錯過通知,請選取右下角的鈴鐺圖示,以再次查看。

    [檢視輸出] 視窗的螢幕擷取畫面。

在 Azure 中測試您的函式

  1. 在 [Visual Studio Code 輸出] 面板中,複製 HTTP 觸發程序的 URL。 呼叫 HTTP URL 觸發函式的 URL 必須採用下列格式:

    https://<function-app-name>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. 將 HTTP 要求的新 URL 貼到瀏覽器的網址列。 當您使用已發佈的應用程式時,您必須取得您在本機測試時取得之相同的狀態回應。

您使用 Visual Studio Code 建立和發佈的 C# Durable Functions 應用程式已可供使用。

清除資源

如果您不再需要為完成快速入門所建立的資源,若要避免 Azure 訂用帳戶中的相關成本,請刪除資源群組和所有相關資源。

在此快速入門中,您將使用 Visual Studio 2022 在本機建立及測試 "hello world" Durable Functions 應用程式。 此函式會協調對其他函式的呼叫並鏈結在一起。 接著,您會在 Azure 中發佈函式程式碼。 您使用的工具可透過 Visual Studio 2022 中的 Azure 開發工作負載取得。

Visual Studio 2019 中 Durable Functions 應用程式程式碼的螢幕擷取畫面。

必要條件

若要完成本快速入門,您需要:

  • 已安裝 Visual Studio 2022

    確定也已經安裝 Azure 開發工作負載。 Visual Studio 2019 也支援 Durable Functions 開發,但 UI 和步驟有所不同。

  • 已安裝且正在執行 Azurite 仿真器

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

建立函式應用程式專案

Azure Functions 範本會建立可發佈至 Azure 中函數應用程式的專案。 您可以使用函數應用程式將多個函式群組為一個邏輯單位,以更輕鬆地管理、部署、調整和共用資源。

  1. 在 Visual Studio 的 [檔案] 功能表上,選取 [新增]>[專案]

  2. 在 [建立新專案] 中,搜尋函式、選取 [Azure Functions] 範本,然後選取 [下一步]

    Visual Studio 中新增專案對話方塊的螢幕擷取畫面。

  3. 針對 [專案名稱],輸入您專案的名稱,然後選取 [確定]。 專案名稱必須是有效的 C# 命名空間,因此不會使用底線、連字號或非英數字元。

  4. 在 [其他資訊] 中,使用下表所述的設定。

    在 Visual Studio 中建立新的 Azure Functions 應用程式對話的螢幕擷取畫面。

    設定 動作 描述
    函式背景工作 選取 .NET 8 隔離式 (長期支援) 建立 Azure Functions 專案,使其可支援在隔離式背景工作處理序和 Azure Functions 執行階段 4.0 中執行的 .NET 8。 如需詳細資訊,請參閱如何設定 Azure Functions run-time 版本目標
    Function 輸入 Durable Functions 協調流程 建立 Durable Functions 協調流程。

    注意

    如果 .NET 8 隔離式 (長期支援) 未出現在 [Azure Functions 背景工作角色] 功能表中,您可能沒有最新的 Azure Functions 工具集和範本。 移至 [工具]>[選項]>[專案和解決方案]>[Azure Functions]>[檢查更新以下載最新]

  5. 若要使用 Azurite 仿真器,請確定已選取 [使用 Azurite 作為執行階段儲存體帳戶 (AzureWebJobStorage)] 核取方塊。 若要使用 Durable Functions 協調流程範本建立 Azure Functions 專案,請選取 [建立]。 此專案具有執行您的函式所需的基本組態檔。

    注意

    您可以針對 Durable Functions 應用程式選擇其他儲存體選項。 如需詳細資訊,請參閱 Durable Functions 儲存提供者

在您的應用程式資料夾中,名為 Function1.cs 的檔案包含三個函式。 這三個函式為 Durable Functions 應用程式的基本建置組塊:

方法 描述
RunOrchestrator 定義 Durable Functions 應用程式協調流程。 在此情況下,協調流程會啟動、建立清單,然後將三個函式呼叫的結果新增至清單。 完成三個函式呼叫後,它會傳回清單。
SayHello 傳回您好的簡單函數應用程式。 此函式包含要進行協調的商務邏輯。
HttpStart HTTP 觸發的函式,該函式會啟動協調流程執行個體並傳回檢查狀態回應。

如需這些函式的詳細資訊,請參閱 Durable Functions 類型和功能

在本機測試函式

Azure Functions Core Tools 提供您在本機開發電腦上執行 Azure Functions 專案的功能。 第一次在 Visual Studio Code 中啟動函式時,系統會提示您安裝這些工具。

  1. 在 Visual Studio Code 的 SayHello 活動函式程式碼中,設定中斷點,然後選取 [F5]。 如果出現提示,請接受 Visual Studio 所發出要下載及安裝 Azure Functions Core (command-line) 工具的要求。 您可能也需要啟用防火牆例外狀況,工具才能處理 HTTP 要求。

    注意

    如需有關偵錯的詳細資訊,請參閱 Durable Functions 診斷

  2. 從 Azure Functions 執行階段輸出複製函式的 URL。

    Azure 本機執行階段的螢幕擷取畫面。

  3. 將 HTTP 要求的 URL 貼到瀏覽器的網址列中,然後執行要求。 下列螢幕擷取畫面顯示函式針對本機 GET 要求在瀏覽器中傳回的回應:

    已叫出 statusQueryGetUri 的瀏覽器視窗螢幕擷取畫面。

    回應是 HTTP 函式的初始結果。 其可讓您知道長期協調流程已成功啟動。 其尚未顯示協調流程的最終結果。 回應包含一些實用的 URL。

    此時,活動函式中的中斷點應已被點擊,因為協調流程已啟動。 逐步執行以取得協調流程狀態的回應。

  4. 複製 statusQueryGetUri 的 URL 值,並將其貼在瀏覽器的網址列中,然後執行要求。

    此要求會查詢協調流程執行個體的狀態。 您應該會看到執行個體已完成,而且它包含耐久性函式的輸出或結果,如下列範例所示:

    {
        "name":"HelloCities",
        "instanceId":"668814ac6ce84a43a9e6757f81dbc0bc",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello Seattle!",
        "createdTime":"2023-01-31T16:44:34Z",
        "lastUpdatedTime":"2023-01-31T16:44:37Z"
    }
    

    提示

    了解如何透過中斷點觀察 Durable Functions 應用程式的重新執行行為

  5. 若要停止偵錯,請選取 [Shift + F5]。

驗證函式在本機電腦上正確執行之後,就可以將專案發佈到 Azure。

將專案發佈至 Azure

您的 Azure 訂用帳戶中必須具有函數應用程式,才能發佈您的專案。 您可以在 Visual Studio 中建立函數應用程式。

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案並選取 [發行]。 在 [目標] 中,選取 [Azure],然後選取 [下一步]

    [發佈] 窗格的螢幕擷取畫面。

  2. 在 [特定目標] 中,選取 [Azure 函數應用程式 (Windows)]。 已建立在 Windows 上執行的函數應用程式。 選取 [下一步]。

    具有特定目標發佈視窗的螢幕擷取畫面。

  3. 在 [Azure Functions 執行個體] 中,選取 [建立新的 Azure 函式]

    螢幕擷取畫面顯示建立新的函數應用程式執行個體。

  4. 使用下表中的指定值建立新的執行個體:

    設定 描述
    名稱 全域唯一的名稱 用以唯一識別新函式應用程式的名稱。 接受此名稱或輸入新的名稱。 有效字元:a-z0-9-
    訂用帳戶 您的訂用帳戶 要使用的 Azure 訂用帳戶。 接受此訂用帳戶,或從下拉式清單中選取一個新的訂用帳戶。
    資源群組 資源群組的名稱 您要在其中建立函數應用程式的資源群組。 選取 [新建] 來建立新的資源群組。 您也可以從下拉式清單中選擇現有的資源群組。
    方案類型 耗用 當您將專案發佈至在取用方案中執行的函式應用程式時,您只需支付您的函式應用程式執行費用。 其他主控方案會產生較高的成本。
    地點 App Service 的位置 Azure 區域中選取 [位置],此位置應靠近您或靠近函式會存取的其他服務。
    Azure 儲存體 一般用途的儲存體帳戶 函數執行階段所需的 Azure 儲存體帳戶。 選取 [新增] 以設定一般用途的儲存體帳戶。 您也可以選擇使用符合儲存體帳戶需求的現有帳戶。
    Application Insights Application Insights 執行個體 您應為函數應用程式啟用 Azure Application Insights 整合。 選取 [新增],以在新的或現有的 Log Analytics 工作區中建立新的執行個體。 您也可以選擇使用現有的執行個體。

    建立 App Service 對話的螢幕擷取畫面。

  5. 選取 [建立],以在 Azure 中建立函數應用程式及其相關資源。 資源建立的狀態會顯示在視窗左下角。

  6. 在 [Azure Functions 執行個體] 上,請確定已選取 [從封裝檔案執行] 核取方塊。 您的函數應用程式使用已啟用 Run-From-Package 模式的 Zip Deploy 來部署。 Zip Deploy 為函式專案的建議部署方法,可提高效能。

    [完成設定檔建立] 窗格的螢幕擷取畫面。

  7. 選取 [完成],然後在 [發佈] 窗格上選取 [發佈],將包含專案檔案的套件部署到 Azure 中的新函數應用程式。

    部署完成時,[發佈] 索引標籤上會顯示 Azure 中函數應用程式的根 URL。

  8. 在 [發佈] 索引標籤的 [裝載] 區段中,選取 [在 Azure 入口網站中開啟]。 新的函數應用程式 Azure 資源會在 Azure 入口網站中開啟。

    發佈成功訊息的螢幕擷取畫面。

在 Azure 中測試您的函式

  1. 在 [發佈設定檔] 頁面上,複製函數應用程式的基礎 URL。 使用新的基礎 URL 取代您在本機測試函式時所使用之 URL 的 localhost:port 部分。

    呼叫耐久函式 HTTP 觸發程序的 URL 必須採用下列格式:

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. 將 HTTP 要求的新 URL 貼到瀏覽器的網址列。 當您測試已發佈的應用程式時,您必須取得您在本機測試時取得之相同的狀態回應。

您使用 Visual Studio 建立和發佈的 C# Durable Functions 應用程式已可供使用。

清除資源

如果您不再需要為完成快速入門所建立的資源,若要避免 Azure 訂用帳戶中的相關成本,請刪除資源群組和所有相關資源。