Was ist Durable Functions?

Abgeschlossen

Mithilfe von Durable Functions können Sie komplexe zustandsbehaftete Funktionen in einer serverlosen Umgebung implementieren.

Im Beispielszenario wendet Ihr Unternehmen bei Projektentwurfsvorschlägen momentan einen manuellen Genehmigungsprozess an. Der Prozess besteht aus mehreren Schritten, und jeder Schritt in diesem Prozesses kann in der Dauer variieren. Die interne Implementierung eines automatisierten Prozesses ist komplex und teuer. Das Koordinieren jedes Schritts ist mühsam. Außerdem müssen Sie eine benutzerdefinierte Logik in den Workflow einbinden können.

In dieser Lerneinheit erfahren Sie, was die Vorteile von Durable Functions sind. Sie lernen die verschiedenen Funktionstypen und die wichtigsten Konzepte im Zusammenhang mit Durable Functions kennen.

Durable Functions

Durable Functions ist eine Erweiterung von Azure Functions. Während Azure Functions in zustandslosen Umgebungen zum Einsatz kommt, können Zustände zwischen Funktionsaufrufen mithilfe von Durable Functions beibehalten werden. Mithilfe dieses Ansatzes können Sie komplexe zustandsbehaftete Ausführungen in einer serverlosen Umgebung vereinfachen.

Durable Functions kann entsprechend Ihren Bedürfnissen skaliert werden und stellt ein kostengünstiges Mittel dar, komplexe Workflows in der Cloud zu implementieren. Zu den Vorteilen der Verwendung von Durable Functions gehört Folgendes:

  • Mithilfe dieser Erweiterung können Sie ereignisgesteuerten Code schreiben. Eine langlebige Funktion kann asynchron auf eines oder mehrere externe Ereignisse warten und dann mehrere Aufgaben als Reaktion auf diese Ereignisse ausführen.

  • Sie können Funktionen miteinander verketten. Sie können häufige Muster implementieren, z. B. Auffächern/Auffächern nach innen. Hierbei wird eine Funktion verwendet, um parallel andere aufzurufen und dann die Ergebnisse zusammenzufassen.

  • Sie können Funktionen orchestrieren und koordinieren und die Reihenfolge bestimmen, in der die Funktionen ausgeführt werden sollen.

  • Der Zustand wird für Sie verwaltet. Sie müssen keinen eigenen Code schreiben, um Zustandsinformationen für eine zeitintensive Funktion zu speichern.

Mithilfe von Durable Functions können Sie zustandsbehaftete Workflows mithilfe einer Orchestrierungsfunktion definieren. Eine Orchestrierungsfunktion bietet diese zusätzlichen Vorteile:

  • Sie können die Workflows in Code definieren. Sie müssen keine JSON-Beschreibung schreiben oder ein Tool für die Erstellung eines Workflows verwenden.

  • Funktionen können sowohl synchron als auch asynchron aufgerufen werden. Die Ausgabe der aufgerufenen Funktionen wird lokal in Variablen gespeichert und in anschließenden Funktionsaufrufen verwendet.

  • Azure überprüft den Fortschritt einer Funktion automatisch, wenn die Funktion abwartet. Azure entscheidet sich möglicherweise dafür, die Funktion zu pausieren und ihren Zustand zu speichern, während die Funktion wartet, um Ressourcen zu schonen und Kosten zu reduzieren. Wenn die Funktion dann wieder ausgeführt wird, hebt Azure das Pausieren der Funktion auf und stellt ihren Zustand wieder her.

Funktionstypen

Es gibt drei Arten langlebiger Funktionen, die Sie verwenden können: Client, Orchestrator und Activity.

Client-Funktionen sind der Einstiegspunkt für das Erstellen einer Instanz in einer Durable Functions-Orchestrierung. Sie können als Reaktion auf viele verschiedene Ereignisse ausgeführt werden, z. B. wenn eine neue HTTP-Anforderung eintrifft, eine Nachricht in eine Nachrichtenwarteschlange verschoben wird oder ein Ereignis in einem Ereignisdatenstrom ankommt. Sie können in jeder der unterstützten Programmiersprachen geschrieben werden.

Orchestrator-Funktionen beschreiben, wie und in welcher Reihenfolge Aktionen ausgeführt werden. Sie schreiben die Orchestrierungslogik in Code (C# oder JavaScript).

Aktivitätsfunktionen sind die grundlegenden Arbeitseinheiten bei der Durable Functions-Orchestrierung. Eine Aktivitätsfunktion enthält die tatsächlichen Tätigkeiten, die von den Aufgaben ausgeführt werden, die orchestriert werden.

Anwendungsmuster

Mithilfe von Durable Functions können Sie viele gängige Workflowmuster implementieren. Zu diesen Mustern gehören die folgenden:

  • Funktionsverkettung: In diesem Muster führt der Workflow eine Folge von Funktionen in einer angegebenen Reihenfolge aus. Die Ausgabe einer Funktion wird dabei als Eingabe für die nächste Funktion der Folge verwendet. Die Ausgabe der letzten Funktion wird verwendet, um ein Ergebnis zu generieren.

    Diagram illustrating a function chaining pattern.

  • Auffächern auswärts/einwärts: Bei diesem Muster werden mehrere Funktionen parallel ausgeführt, und es wird auf den Abschluss aller Funktionen gewartet. Sie können die Ergebnisse der parallelen Ausführungen aggregieren oder sie zum Berechnen eines Endergebnisses verwenden.

    Diagram illustrating a fan out/fan in pattern.

  • Asynchrone HTTP-APIs: Dieses Muster versucht das Problem zu lösen, den Zustand von zeitintensiven Vorgängen mit externen Clients zu koordinieren. Ein HTTP-Aufruf kann die zeitintensive Aktion auslösen und dann den Client an einen Statusendpunkt umleiten. Der Client kann nachsehen, wann der Vorgang abgeschlossen ist, indem er diesen Endpunkt abruft.

    Diagram illustrating an async HTTP API pattern.

  • Überwachung: Dieses Muster implementiert einen sich wiederholenden Prozess in einem Workflow, z. B. um nach einer Zustandsänderung zu suchen. Sie könnten dieses Muster beispielsweise für Abfragen verwenden, die so lange ausgeführt werden, bis bestimmte Bedingungen erfüllt sind.

    Diagram illustrating a monitor pattern.

  • Benutzerinteraktion: Dieses Muster kombiniert automatisierte Prozesse, die u. a. eine Benutzerinteraktion beinhalten. Ein manueller Prozess innerhalb eines automatisierten Prozesses ist schwierig, da Personen nicht im gleichen hohen Maß verfügbar und reaktionsfähig sind wie die meisten Computer. Sie können Benutzerinteraktion mithilfe von Zeitlimits und einer Kompensierungslogik integrieren, die ausgeführt wird, wenn die ordnungsgemäße Interaktion des Menschen nicht innerhalb einer festgelegten Antwortzeit erfolgt. Ein Genehmigungsprozess ist ein Beispiel für einen Prozess, der Benutzerinteraktion erfordert.

    Diagram illustrating a human interaction pattern.

Vergleich mit Logic Apps

Durable Functions und Logic Apps sind beides Azure-Dienste, die die Verwendung serverloser Workloads ermöglichen. Durable Functions von Azure ist als leistungsstarke serverlose Computefunktion zur Ausführung benutzerdefinierter Logiken ausgelegt. Logic Apps von Azure eignet sich besser für die Integration von Azure-Diensten und -Komponenten. Sie können beide Technologien verwenden, um komplexe Orchestrierungen zu erstellen. Mit Azure Durable Functions entwickeln Sie Orchestrierungen, indem Sie Code schreiben und die Erweiterung „Durable Functions“ verwenden. Mit Logic Apps erstellen Sie Orchestrierungen über die Designoberfläche oder durch Bearbeiten von Konfigurationsdateien.

In der folgenden Tabelle sind einige der wichtigsten Unterschiede zwischen Azure Durable Functions und Azure Logic Apps aufgeführt.

Aufgabe Azure Durable Functions Azure Logic Apps
Entwicklung Code First (imperativ) Design First (deklarativ)
Konnektivität Etwa ein Dutzend Bindungstypen sind integriert. Sie können Code für benutzerdefinierte Bindungen schreiben. Große Sammlung an Connectors. Enterprise Integration Pack für B2B. Sie können auch benutzerdefinierte Connectors erstellen.
Aktionen Jede Aktivität ist eine Azure-Funktion. Sie schreiben den Code für Aktivitätsfunktionen. Umfangreiche Sammlung vorgefertigter Aktionen. Sie integrieren benutzerdefinierte Logiken über benutzerdefinierte Connectors.
Überwachung Azure Application Insights Azure-Portal, Azure Monitor-Protokolle
Verwaltung REST-API, PowerShell, Visual Studio Azure-Portal, REST-API, PowerShell, Visual Studio, Visual Studio Code-Erweiterung

Überprüfen Sie Ihr Wissen

1.

Was ist Durable Functions?

2.

Welche der folgenden Aussagen beschreibt die Rolle der Orchestratorfunktion in einem Workflow am treffendsten?

3.

Welche der folgenden Aussagen erklärt am besten, warum das Anwendungsmuster „Benutzerinteraktion“ von Durable Functions profitieren kann?