Übersicht über die Durable Functions-Versionen

Durable Functions ist eine Erweiterung von Azure Functions und Azure WebJobs, mit der Sie zustandsbehaftete Funktionen in einer serverlosen Umgebung schreiben können. Die Erweiterung verwaltet Status, Prüfpunkte und Neustarts für Sie. Wenn Sie nicht bereits mit Durable Functions vertraut sind, lesen Sie die Übersichtsdokumentation.

Neue Features in 2.x

In diesem Abschnitt werden die Features von Durable Functions beschrieben, die in Version 2.x hinzugefügt wurden.

Hinweis

Dieser Abschnitt gilt nicht für Durable Functions im isolierten Dotnet-Worker. Informationen hierzu finden Sie unter Übersicht über isolierte Prozesse für dauerhafte Funktionen.

Dauerhafte Entitäten

In Durable Functions 2.x haben wir ein neues Konzept für Entitätsfunktionen eingeführt.

Entitätsfunktionen definieren Vorgänge zum Lesen und Aktualisieren kleinerer Zustandsteile, bekannt als dauerhafte Entitäten. Wie Orchestratorfunktionen besitzen Entitätsfunktionen einen speziellen Triggertyp, den Entitätstrigger. Im Gegensatz zu Orchestratorfunktionen besitzen Entitätsfunktionen keine spezifischen Codeeinschränkungen. Entitätsfunktionen verwalten Zustände auch explizit, statt Zustände implizit durch die Ablaufsteuerung darzustellen.

Weitere Informationen finden Sie im Artikel Dauerhafte Entitäten.

Durable HTTP

In Durable Functions 2.x haben wir ein neues Feature Durable HTTP eingeführt, das Folgendes ermöglicht:

  • Direktes Aufrufen von HTTP-APIs aus Orchestrierungsfunktionen (es gelten einige dokumentierte Einschränkungen)
  • Implementieren automatischer clientseitiger HTTP 202-Statusabfragen
  • Integrierte Unterstützung für verwaltete Azure-Identitäten

Weitere Informationen finden Sie im Artikel zu den HTTP-Funktionen.

Migration von 1.x zu 2.x

In diesem Abschnitt wird beschrieben, wie Sie Ihre vorhandene Durable Functions-Version 1.x zu Version 2.x migrieren, um die neuen Funktionen zu nutzen.

Upgrade der Erweiterung

Installieren Sie neueste 2.x-Version der Durable Functions-Bindungserweiterung in Ihrem Projekt.

JavaScript, Python und PowerShell

Durable Functions 2.x ist ab Version 2.x des Azure Functions-Erweiterungspakets verfügbar.

Die Python-Unterstützung in Durable Functions setzt Durable Functions 2.x oder höher voraus.

Um die Version des Erweiterungspakets in Ihrem Projekt zu aktualisieren, öffnen Sie „host.json“ und aktualisieren den Abschnitt extensionBundle, um Version 4.x ([4.*, 5.0.0)) zu verwenden.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Hinweis

Wenn Visual Studio Code nicht die richtigen Vorlagen anzeigt, nachdem Sie die Erweiterungspaketversion geändert haben, laden Sie das Fenster erneut durch Ausführen des Befehls Entwickler: Fenster erneut laden (STRG+R unter Windows und Linux, Command+R unter macOS).

Java

Durable Functions 2.x ist ab Version 4.x des Azure Functions-Erweiterungspakets verfügbar. Sie müssen die Azure Functions 4.0-Runtime verwenden, um Java-Funktionen auszuführen.

Um die Version des Erweiterungspakets in Ihrem Projekt zu aktualisieren, öffnen Sie „host.json“ und aktualisieren den Abschnitt extensionBundle, um Version 4.x ([4.*, 5.0.0)) zu verwenden.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

.NET

Aktualisieren Sie Ihr .NET-Projekt, um die neueste Version der Durable Functions Bindingserweiterung zu verwenden.

Siehe hierzu Registrieren von Bindungserweiterungen von Azure Functions.

Aktualisieren Ihres Codes

In Durable Functions 2.x werden verschiedene Breaking Changes eingeführt. Vorhandene Durable Functions 1.x-Anwendungen sind ohne Codeänderungen mit Durable Functions 2.x nicht kompatibel. In diesem Abschnitt werden einige der Änderungen aufgeführt, die Sie beim Upgrade Ihrer Funktionen der Version 1.x auf die Version 2.x vornehmen müssen.

host.json-Schema

Durable Functions 2.x verwendet ein neues host.json-Schema. Zu den wichtigsten Änderungen gegenüber 1.x gehören:

  • "storageProvider" (und Unterabschnitt "azureStorage") für die speicherspezifische Konfiguration
  • "tracing" für die Konfiguration von Nachverfolgung und Protokollierung
  • "notifications" (und Unterabschnitt "eventGrid") für die Konfiguration von Event Grid-Benachrichtigungen

Ausführliche Informationen finden Sie in der Referenzdokumentation für die host.json-Datei von Durable Functions.

Standardnamensänderungen für Aufgabenhubs

Wenn in Version 1.x in der Datei „host.json“ kein Aufgabenhubname angegeben wurde, wurde standardmäßig „DurableFunctionsHub“ verwendet. In Version 2.x wird der Standardname für Aufgabenhubs jetzt vom Namen der Funktions-App abgeleitet. Aus diesem Grund gilt Folgendes: Wenn Sie beim Upgrade auf 2.x keinen Aufgabenhubnamen angegeben haben, wird für Ihren Code ein neuer Aufgabenhub verwendet, und alle ausgeführten Orchestrierungen verfügen nicht mehr über eine Anwendung für die Verarbeitung. Als Problemumgehung können Sie entweder Ihren Aufgabenhubnamen explizit auf den Standardnamen „DurableFunctionsHub“ aus v1.x festlegen, oder Sie können sich an die Anleitung in unserem Leitfaden zur Bereitstellung ohne Ausfallzeit halten, um wichtige Änderungen für ausgeführte Orchestrierungen zu verarbeiten.

Änderungen an der öffentlichen Schnittstelle (nur .NET)

In Version 1.x umfassen die verschiedenen context-Objekte, die von Durable Functions unterstützt werden, abstrakte Basisklassen für die Verwendung bei Komponententests. In Durable Functions 2.x werden diese abstrakten Basisklassen durch Schnittstellen ersetzt.

In der folgenden Tabelle werden die Hauptänderungen dargestellt:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient oder IDurableClient
DurableOrchestrationContext oder DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext oder DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

In dem Fall, wo eine abstrakte Basisklasse virtuelle Methoden enthielt, wurden diese virtuellen Methoden durch Erweiterungsmethoden ersetzt, die in DurableContextExtensions definiert sind.

Änderungen an function.json

In Durable Functions 1.x verwendet die Clientorchestrierungsbindung einen type von orchestrationClient. Version 2.x verwendet stattdessen durableClient.

Auslösen von Ereignisänderungen

In Durable Functions 1.x führten der Aufruf der API zur Ereignisauslösung und das Angeben einer nicht vorhandenen Instanz zu einem Fehler ohne Fehlermeldung. Ab 2.x führt das Auslösen eines Ereignisses für eine nicht vorhandene Orchestrierung zu einer Ausnahme.