Freigeben über


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

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

In diesem Abschnitt wird das neue Microsoft.Azure.WebJobs.Extensions.DurableTask v3-Paket vorgestellt (in nachfolgenden Abschnitten als WebJobs.Extensions.DurableTask bezeichnet) und gibt Details zu seinen Aktualisierungen und Änderungen. Dieses Update gilt nur 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.

Neues 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. 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-Backend ist der Partitions-Manager für die Verteilung 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 Funktionen v1-Runtime 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 Function Runtime v1 verwenden müssen, nutzen 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 Framework-Update

WebJobs.Extensions.DurableTask v3 aktualisiert das .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 im Vergleich zu der in v2 verwendeten eine andere Zeichenkodierung (Base64 anstatt UTF-8) hat. Wenn Sie ein Downgrade von v3.x auf v2.x ausführen müssen, verwenden Sie mindestens v2.13.5, um die Rückwärtskompatibilität sicherzustellen. Für .NET-Out-of-Process-Benutzer mit Microsoft.Azure.Functions.Worker.Extensions.DurableTask, downgraden Sie auf v1.1.5 oder höher, falls 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 von Durable Functions beschrieben, die in Version 2.x hinzugefügt werden.

Hinweis

Dieser Abschnitt gilt nicht für Durable Functions in dotnet isolierter Worker. Dafür siehe Überblick über dauerhafte Funktionen im isolierten Prozess.

Dauerhafte Entitäten

In Durable Functions 2.x haben wir ein neues Konzept der Entity-Funktionen eingeführt.

Entitätsfunktionen definieren Vorgänge zum Lesen und Aktualisieren kleiner Teile des Zustands, die als dauerhafte Entitäten 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

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

  • 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 Azure Managed Identities.

Weitere Informationen finden Sie im Artikel zu HTTP-Features .

Migrieren von 1.x zu 2.x

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

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).

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

.NET

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 Ihres 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 Ablaufverfolgung und Protokollierungskonfiguration.
  • "notifications" (und dem "eventGrid"-Unterabschnitt) für die Event Grid-Benachrichtigungskonfiguration.

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 der öffentlichen Schnittstelle (nur .NET)

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 wird für die Orchestrierungsclientbindung ein type mit orchestrationClient verwendet. 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.