Durable Functions Versions- und Migrationshandbuch

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 noch nicht mit Durable Functions vertraut sind, lesen Sie die Dokumentation overview.

Versionszusammenfassung

Version Status Die wichtigsten Änderungen
v3.x Aktuell (empfohlen) Aktualisiert Azure Storage SDK, verbesserte Kosteneffizienz, keine Codeänderungen zum Upgrade von v2.x
v2.x Gewartet (nur Sicherheits- und Fehlerbehebungen) Dauerhafte Entitäten, dauerhaftes HTTP
v1.x Ende des Supports September 2026 Erbe

Neuerungen in v3.x

Die Microsoft.Azure. WebJobs.Extensions.DurableTask v3-Paket (in nachfolgenden Abschnitten als WebJobs.Extensions.DurableTask bezeichnet) ist die aktuelle empfohlene Version. Für das Upgrade von v2.x sind keine Codeänderungen erforderlich . Sie müssen nur die Paketabhängigkeiten aktualisieren. Dieses Update gilt nur als bahnbrechende Änderung für Kunden, die dauerhafte C#-Apps ausführen, die das In-Process-Modell verwenden.

Hinweis

Das Durable Functions .NET out-of-process package, Microsoft.Azure. Functions.Worker.Extensions.DurableTask, verweist auf Microsoft. Azure. WebJobs.Extensions.DurableTask als zugrunde liegende Assembly. Daher gilt dieses Update auch für Microsoft. Azure. Functions.Worker.Extensions.DurableTask ab Version 1.2.x.

Aktualisiertes Azure Storage SDK

Standardmäßig verwenden Durable Functions Azure Storage als Speicher-Back-End, um den Anwendungszustand dauerhaft zu speichern. In WebJobs.Extensions.DurableTask v3 wurde das Azure Storage Back-End aktualisiert, um die neuesten Versionen der Azure Storage SDKs zu verwenden: Azure. Data.Tables, Azure. Storage.Blobs und Azure. Storage.Queues. Diese SDKs bieten eine verbesserte Unterstützung für managed Identity, bessere Leistung, effizientere Datenverarbeitung und verbesserte Sicherheit im Vergleich zu den älteren Microsoft.Azure.Storage.*-Paketen, die in v2.x verwendet werden.

Verbesserte Kosteneffizienz (für den Azure Storage Anbieter)

Im Azure Storage-Backend ist der Partitions-Manager für die Verteilung von Partitionen/Kontrollwarteschlangen unter den Workern verantwortlich. Das V3-Paket "WebJobs.Extensions.DurableTask" verwendet standardmäßig partitions-Manager V3, bei dem es sich um ein neues Design handelt, das Azure Tabellen zum Verwalten von Partitionszuweisungen anstelle von Azure Blob-Leases nutzt. Dieser Entwurf kann die Speicherkosten erheblich reduzieren und gleichzeitig das Debuggen vereinfachen. Wenn Partition Manager V3 verwendet wird, wird eine neue Tabelle mit dem Namen Partitionsin Ihrem Speicherkonto erstellt, sodass Sie die Partitionsinformationen ganz einfach überprüfen können.

Unterstützung für die Azure Functions v1-Laufzeit wurde entfernt

WebJobs.Extensions.DurableTask v3 unterstützt Version 1.x der Azure Functions-Laufzeit nicht mehr, deren Unterstützung im September 2026 endet. Wenn Sie die Functions Runtime v1 verwenden müssen, verwenden Sie bitte eine Erweiterungsversion von Durable Functions unter v2.11.0. Denken Sie daran, dass Durable Functions, wenn das geplante Ende des Supports kommt, auch die Unterstützung für die Laufzeit v1 ablegt.

.NET Laufzeitzielupdate

WebJobs.Extensions.DurableTask v3 aktualisiert die Ziellaufzeit von .NET Core 3.1 auf .NET 6 und bietet verbesserte Leistung und verbesserte Kompatibilität mit modernen .NET Features und Bibliotheken. Dieses Update richtet sich an zukünftige Versionen der Azure Functions Erweiterungspakete.

Migrieren von v2.x zu v3.x

Die Migration von v2.x zu v3.x erfordert keine Codeänderungen – aktualisieren Sie einfach Ihre Abhängigkeiten, um mit der Verwendung der neuen Features zu beginnen.

Aktualisieren Sie auf Azure Functions Erweiterungspaket, Version 4.22.0 oder höher.

Die Downgrade-Kompatibilität (von v3.x zu v2.x)

WebJobs.Extensions.DurableTask v3 verwendet eine andere Textcodierung für das Azure Storage SDK (Base64) im Vergleich zu v2 (UTF-8). Wenn Sie von v3.x auf v2.x zurückkehren müssen, verwenden Sie die folgenden Mindestversionen, um die Abwärtskompatibilität sicherzustellen:

  • In-process model:v2.13.5 oder höher.
  • Isoliertes Arbeitsmodell:v1.1.5 oder höher (wenn Sie von v1.2.x oder höher zurückkehren).

Wiederherstellen einer Erweiterungspaketversion vor 4.22.0.

Support und Wartung von v2.x

WebJobs.Extensions.DurableTask v2.x erhält weiterhin Sicherheitsupdates und Fehlerbehebungen, um sicherzustellen, dass Ihre vorhandenen Anwendungen sicher und stabil bleiben. Alle neuen Features und Verbesserungen werden jedoch ausschließlich zu v3.x hinzugefügt. Aus diesem Gründen sollten Sie ein Upgrade auf WebJobs.Extensions.DurableTask v3 durchführen, sobald Sie die neuesten Funktionen und fortlaufenden Verbesserungen nutzen können.

In v2.x eingeführte Features

Die folgenden Features sind in Durable Functions 2.x und höher in allen unterstützten Sprachen verfügbar.

Hinweis

Die .NET In-Process-API-Details in diesem Abschnitt gelten nicht für das isolierte Workermodell. Eine Anleitung für isolierte Mitarbeiter finden Sie in der Übersicht über isolierte Prozesse Durable Functions.

Dauerhafte Entitäten

Durable Functions unterstützt entity-Funktionen zum Lesen und Aktualisieren kleiner Zustandselemente, die als durable Entities bezeichnet werden. Wie Orchestratorfunktionen sind Entitätsfunktionen Funktionen mit einem speziellen Triggertyp, Entitätstrigger. Im Gegensatz zu Orchestratorfunktionen weisen Entitätsfunktionen keine spezifischen Codeeinschränkungen auf. Entitätsfunktionen verwalten Zustände auch explizit, anstatt sie implizit über den Kontrollfluss darzustellen.

Weitere Informationen finden Sie im Artikel zu dauerhaften Entitäten .

Dauerhaftes HTTP

Durable Functions enthält ein feature Durable HTTP mit dem Sie folgende Aktionen ausführen können:

  • Aufrufen von HTTP-APIs direkt über Orchestrierungsfunktionen (mit einigen dokumentierten Einschränkungen).
  • Implementieren Sie die automatische clientseitige HTTP 202-Statusabfragung.
  • Verwenden Sie integrierte Unterstützung für Azure Managed Identities.

Weitere Informationen finden Sie im Artikel zu HTTP-Features .

Migrieren von 1.x zu 2.x

Important

Version 1.x der Azure Functions Laufzeit erreicht im September 2026 das Support-Ende. Wenn Sie noch auf v1.x sind, planen Sie ihre Migration in Kürze.

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

Aktualisieren der Durable Functions-Erweiterung

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

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

Die Unterstützung von Python in Durable Functions erfordert Durable Functions 2.x oder höher.

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

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

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

Um die Erweiterungspaketversion in Ihrem Projekt zu aktualisieren, öffnen Sie host.json, und aktualisieren Sie den extensionBundle Abschnitt, 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 neu, indem Sie den Befehl Developer: Fenster neu laden Befehl (Ctrl+R unter Windows und Linux, Command+R unter macOS).

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

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

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

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

Weitere Informationen finden Sie unter Azure Functions Binding-Erweiterungen registrieren.

Aktualisieren des Durable Functions Codes

Durable Functions 2.x führt mehrere wesentliche Änderungen mit tiefgreifenden Auswirkungen ein. Durable Functions 1.x-Anwendungen sind ohne Codeänderungen nicht mit Durable Functions 2.x kompatibel. In diesem Abschnitt werden einige der Änderungen aufgeführt, die Sie beim Upgrade Ihrer Version 1.x-Funktionen auf 2.x vornehmen müssen.

Host.json-Schema

Durable Functions 2.x verwendet ein neues host.json Schema. Die wichtigsten Änderungen von 1.x umfassen:

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

Weitere Informationen finden Sie in der Referenzdokumentation Durable Functions host.json.

Standardnamensänderungen für Aufgabenhubs

Wenn in Version 1.x kein Aufgabenhubname in host.jsonangegeben wurde, wurde er standardmäßig auf "DurableFunctionsHub" festgelegt. In Version 2.x wird der Standardname des 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. Um dies zu umgehen, können Sie ihren Task Hub-Namen entweder explizit auf den v1.x-Standardwert "DurableFunctionsHub" festlegen, oder Sie können unseren Bereitstellungsleitfaden für Null-Ausfallzeiten folgen, um Details zur Behandlung von Änderungen für In-Flight-Orchestrierungen zu erhalten.

Änderungen an öffentlichen Schnittstellen in Durable Functions

In Version 1.x verfügen die verschiedenen context objekte, die von Durable Functions unterstützt werden, über abstrakte Basisklassen für die Verwendung in Komponententests. Im Rahmen Durable Functions 2.x werden diese abstrakten Basisklassen durch Schnittstellen ersetzt.

Die folgende Tabelle stellt die wichtigsten Änderungen dar:

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

In dem Fall, in dem eine abstrakte Basisklasse virtuelle Methoden enthielt, wurden diese virtuellen Methoden durch erweiterungsmethoden ersetzt, die in DurableContextExtensionsdefiniert 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ührte das Aufrufen der raise event-API und das Angeben einer nicht existierenden Instanz zu einem stillen Fehler. Ab 2.x führt das Auslösen eines Ereignisses für eine nicht vorhandene Orchestrierung zu einer Ausnahme.