Freigeben über


Übersicht über die Durable Functions-Versionen

Dauerhafte Funktionen sind eine Erweiterung von Azure Functions und Azure WebJobs , mit denen 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 dauerhaften Funktionen vertraut sind, lesen Sie die Übersichtsdokumentation.

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

In diesem Abschnitt wird das neue Microsoft.Azure.WebJobs.Extensions.DurableTask v3-Paket (in nachfolgenden Abschnitten als WebJobs.Extensions.DurableTask bezeichnet) eingeführt und Details zu den Updates und Änderungen bereitgestellt. Dieses Update wird nur als eine entscheidende Änderung für Kunden angesehen, die Durable C#-Apps ausführen, welche das In-Process-Modell verwenden.

Hinweis

Das .Durable Functions .NET-out-of-process-Paket 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.

Neues Azure Storage SDK

Standardmäßig verwenden dauerhafte Funktionen 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. Die neuen Azure Storage-SDKs sind sicherer und bieten erweiterte Unterstützung für verwaltete Identitäten. Sie bieten auch eine bessere Leistung, effizientere Datenverarbeitung und andere neueste Speicherfunktionen.

Verbesserte Kosteneffizienz für das Azure Storage-Back-End

Im Azure Storage-Back-End ist der Partitions-Manager für die Verteilung von Partitionen/Kontrollwarteschlangen zwischen Mitarbeitern verantwortlich. Das WebJobs.Extensions.DurableTask v3-Paket verwendet standardmäßig Partition Manager V3, ein neues Design, 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 Funktionen v1-Runtime entfernt

WebJobs.Extensions.DurableTask v3 unterstützt Version 1.x der Azure Functions-Laufzeit nicht mehr, für die die Unterstützung geplant ist, die im September 2026 enden soll. Wenn Sie Functions Runtime v1 verwenden müssen, verwenden Sie bitte eine Erweiterungsversion für Durable Functions unter v2.11.0. Denken Sie daran, dass beim geplanten Ende des Supports auch Durable Functions die Unterstützung für die Laufzeit v1 einstellt.

.NET Framework-Update

WebJobs.Extensions.DurableTask v3 aktualisiert .NET Framework 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.

Migration von WebJobs.Extensions.DurableTask v2.x zu v3.x

Die Migration von WebJobs.Extensions.DurableTask v2.x zu v3.x ist so konzipiert, dass keine Codeänderungen erforderlich sind, da sich die Änderungen im Hintergrund befinden. Aktualisieren Sie einfach Ihre Abhängigkeiten, um mit der Nutzung der neuen Features und Verbesserungen in v3.x zu beginnen.

Hinweis

WebJobs.Extensions.DurableTask v3 verwendet die neueste Version des Azure Storage SDK, die eine andere Textcodierung (Base64) aufweist als die in v2 (UTF-8). Wenn Sie ein Downgrade von v3.x auf v2.x ausführen müssen, verwenden Sie mindestens v2.13.5, um die Abwärtskompatibilität sicherzustellen. Für .NET-Out-of-Process-Benutzer mit Microsoft.Azure.Functions.Worker.Extensions.DurableTask gilt: Downgraden Sie auf v1.1.5 oder beliebige höhere Versionen, wenn Sie von v1.2.x oder höher zurückkehren.

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.

Neue Features in Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x

In diesem Abschnitt werden die Features dauerhafter Funktionen beschrieben, die in Version 2.x hinzugefügt werden.

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 Entitätsfunktionen-Konzept 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 weisen Entitätsfunktionen keine spezifischen Codeeinschränkungen auf. Entitätsfunktionen verwalten Zustände auch explizit, statt Zustände implizit durch die Ablaufsteuerung darzustellen.

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

Dauerhaftes HTTP

In Durable Functions 2.x haben wir ein neues dauerhaftes HTTP-Feature eingeführt, mit dem Sie folgende Aufgaben ausführen können:

  • Aufrufen von HTTP-APIs direkt über Orchestrierungsfunktionen (mit einigen dokumentierten Einschränkungen).
  • Implementieren Sie die automatische clientseitige HTTP 202-Statusabfragung.
  • Integrierte Unterstützung für verwaltete Azure-Identitäten.

Weitere Informationen finden Sie im Artikel zu HTTP-Features .

Migrieren von 1.x zu 2.x

In diesem Abschnitt wird beschrieben, wie Sie Ihre vorhandenen Dauerhaftfunktionen der Version 1.x zu Version 2.x migrieren, um die neuen Features nutzen zu können.

Aktualisieren Sie die Erweiterung

Installieren Sie die 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.

Python-Unterstützung in Durable Functions erfordert Durable Functions Version 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)"
    }
}

Hinweis

Wenn Visual Studio Code die richtigen Vorlagen nicht anzeigt, nachdem Sie die Erweiterungspaketversion geändert haben, laden Sie das Fenster neu, indem Sie den Entwickler ausführen: Befehl " Fenster neu laden " (STRG+R unter Windows und Linux, Befehl+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-Laufzeit verwenden, um Java-Funktionen auszuführen.

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)"
    }
}

.NETTO

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

Weitere Informationen finden Sie unter Registrieren von Azure Functions-Bindungserweiterungen .

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 Version 1.x-Funktionen auf 2.x vornehmen müssen.

Host.json-Schema

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

  • "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 zu dauerhaften Funktionen 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 der öffentlichen Schnittstelle (nur.NET)

In Version 1.x verfügen die verschiedenen Kontextobjekte , die von Durable Functions unterstützt werden, über abstrakte Basisklassen, die für die Verwendung in Komponententests vorgesehen sind. Im Rahmen von 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 vorhandenen Instanz zu einem stillen Fehler. Ab 2.x führt das Auslösen eines Ereignisses für eine nicht vorhandene Orchestrierung zu einer Ausnahme.