Durable Functions 類型和功能

Durable Functions 是 Azure Functions 的擴充功能。 您可以使用 Durable Functions 進行函式執行的具狀態協調流程。 長期函式應用程式是由不同 Azure 函式所組成的解決方案。 函式可以在長期函式協調流程中扮演不同的角色。

Azure Functions 中目前有四種長期函式類型:活動、協調器、實體和用戶端。 本節其餘部分會進一步詳細說明協調流程中涉及的函式類型。

協調器函式

協調器函式描述動作的執行方式及執行動作的順序。 協調器函式描述程式碼 (C# 或 JavaScript) 中的協調流程,如 Durable Functions 應用程式模式所述。 協調流程可以有許多不同類型的動作,包或活動函式子協調流程等待外部事件HTTP計時器。 協調器函式也可以與實體函式互動。

注意

協調器函式使用一般程式碼撰寫而成,但對於如何撰寫程式碼有嚴格的需求。 具體而言,協調器函式程式碼必須有確定性。 未遵循這些決定性需求可能會導致協調器函式無法正確執行。 如需這些需求以及如何解決其問題的詳細資訊,請參閱程式碼條件約束主題。

如需協調器函式及其功能的詳細資訊,請參閱長期協調流程一文。

活動函式

活動函數是耐久函數協調流程中的工作基本單位。 活動函式是在流程中受到協調處理的函式和工作。 例如,您可能會建立協調器函數來處理訂單。 工作包括檢查庫存、向客戶收取費用,以及建立貨件。 每個工作都是個別的活動函數。 這些活動函數可以循序執行、平行執行,或是結合這兩種方式執行。

不同於協調器函式,活動函式不會受限於您可以在其中執行的工作類型。 活動函數通常會用來發出網路呼叫或執行需要大量 CPU 的作業。 活動函數也可以將資料傳回協調器函數。 持久的工作架構保證每個呼叫的活動函式將在協調流程執行期間執行至少一次

注意

因為活動函式只保證執行至少一次,建議您盡可能讓活動函式邏輯等冪

使用活動觸發程序來定義活動函式。 .NET 函式會收到 DurableActivityContext 做為參數。 您也可以將觸發程序繫結至任何其他 JSON 可序列化物件,將輸入傳遞至函數。 在 JavaScript 中,您可以透過 context.bindings 物件上的 <activity trigger binding name> 屬性來存取輸入。 活動函數只能有傳遞至其中的單一值。 若要傳遞多個值,您必須使用元組、陣列或複雜類型。

注意

您只能從協調器函式觸發活動函式。

實體函式

實體函式定義讀取和更新一小部分狀態的作業。 我們通常會將這些具狀態實體稱為長期實體。 與協調器函式一樣,實體函式是具有特殊觸發類型的函式,實體觸發程序。 您也可以從用戶端函式或協調器函式叫用。 不同於協調器函數,實體函數沒有任何特定的程式碼限制。 實體函式還明確管理狀態,而不是透過控制流程隱含表示狀態。

注意

只有 Durable Functions 2.0 和更新版本有提供實體函式和相關功能。

如需實體函式的詳細資訊,請參閱長期實體一文。

用戶端函式

協調器函式是由協調流程觸發程序繫結觸發,而實體函式是由實體觸發程序繫結觸發。 這兩個觸發程序的運作方式是回應加入工作中樞佇列的訊息。 傳遞這些訊息的主要方法是使用協調器用戶端繫結用戶端函式實體用戶端繫結。 任何非協調器函式都可以是用戶端函式。 例如,您可以從 HTTP 觸發的函式、Azure 事件中樞觸發的函式等觸發協調器函式。使函式成為用戶端函式的原因是該函式使用了持久用戶端輸出繫結

注意

不同於其他函式類型,協調器和實體函式無法使用 Azure 入口網站中的按鈕直接觸發。 如果您想要在 Azure 入口網站中測試協調器或實體函式,您必須改為執行用戶端函式,在其實作過程中啟動協調器或實體函式。 如需最簡單的測試體驗,建議使用手動觸發函式。

除了觸發協調器或實體函式之外,長期用戶端繫結也可以用來與執行中的協調流程和實體互動。 例如,可以查詢、終止協調流程,而且可以對其引發事件。 如需管理協調流程和實體的詳細資訊,請參閱執行個體管理一文。

下一步

若要開始使用,請使用 C#JavaScriptPythonPowerShellJava 建立第一個長期函式。