Durable Functions versies en migratiehandleiding

Durable Functions is een uitbreiding van Azure Functions en Azure WebJobs waarmee u stateful functies kunt schrijven in een serverloze omgeving. Met de extensie worden status, controlepunten en het opnieuw opstarten voor u beheerd. Als u nog niet bekend bent met Durable Functions, raadpleegt u de documentatie overview.

Versieoverzicht

Versie Status Belangrijke wijzigingen
v3.x Actueel (aanbevolen) Bijgewerkte Azure Storage SDK, verbeterde kostenefficiëntie, geen codewijzigingen om te upgraden van v2.x
v2.x Onderhouden (alleen beveiligings- en bugfixes) Duurzame entiteiten, Durable HTTP
v1.x Einde van de ondersteuning september 2026 Legacy

Wat is er nieuw in v3.x?

De Microsoft.Azure. WebJobs.Extensions.DurableTask v3 package (in volgende secties aangeduid als WebJobs.Extensions.DurableTask) is de huidige aanbevolen versie. Voor het upgraden van v2.x zijn geen codewijzigingen vereist . U hoeft alleen de pakketafhankelijkheden bij te werken. Deze update wordt alleen beschouwd als een belangrijke wijziging voor klanten die Durable C#-apps uitvoeren die gebruikmaken van het in-process model.

Opmerking

Het Durable Functions .NET out-of-process package, Microsoft.Azure. Functions.Worker.Extensions.DurableTask verwijst naar Microsoft. Azure. WebJobs.Extensions.DurableTask als onderliggende assembly. Deze update is dus ook van toepassing op Microsoft. Azure. Functions.Worker.Extensions.DurableTask vanaf versie 1.2.x.

Bijgewerkte Azure Storage SDK

Standaard gebruikt Durable Functions Azure Storage als back-end voor opslag om de toepassingsstatus duurzaam op te slaan. In WebJobs.Extensions.DurableTask v3 is de Azure Storage back-end bijgewerkt om de nieuwste versies van de Azure Storage SDK's te gebruiken: Azure. Data.Tables, Azure. Storage.Blobs en Azure. Storage.Queues. Deze SDK's bieden verbeterde ondersteuning voor beheerde identiteiten, betere prestaties, efficiëntere gegevensverwerking en verbeterde beveiliging vergeleken met de verouderde Microsoft.Azure.Storage.* pakketten die worden gebruikt in v2.x.

Verbeterde kostenefficiëntie (voor de Azure Storage-provider)

In de Azure Storage back-end is Partition Manager verantwoordelijk voor het distribueren van partitions/beheerwachtrijen tussen werknemers. Het pakket WebJobs.Extensions.DurableTask v3 maakt standaard gebruik van Partition Manager V3. Dit is een nieuw ontwerp dat gebruikmaakt van Azure Tabellen voor het beheren van partitietoewijzingen in plaats van Azure Blob-leases. Dit ontwerp kan de opslagkosten aanzienlijk verlagen terwijl foutopsporing eenvoudiger wordt. Wanneer Partition Manager V3 wordt gebruikt, wordt er een nieuwe tabel met de naam Partitionsgemaakt in uw opslagaccount, zodat u eenvoudig de partitiegegevens kunt controleren.

Ondersteuning voor de Azure Functions v1-runtime is verwijderd

WebJobs.Extensions.DurableTask v3 biedt geen ondersteuning meer voor versie 1.x van de Azure Functions-runtime, waarvoor de ondersteuning is gepland om te eindigen op September 2026. Als u Functions Runtime v1 moet gebruiken, gebruikt u een Durable Functions extensieversie lager dan v2.11.0. Houd er rekening mee dat wanneer het geplande einde van de ondersteuning binnenkomt, Durable Functions ook de ondersteuning voor runtime v1 wegneemt.

.NET runtime doelupdate

WebJobs.Extensions.DurableTask v3 werkt de doelruntime bij van .NET Core 3.1 naar .NET 6, met verbeterde prestaties en verbeterde compatibiliteit met moderne .NET functies en bibliotheken. Deze update is afgestemd op toekomstige releases van de Azure Functions-extensiebundels.

Migreren van v2.x naar v3.x

Voor migratie van v2.x naar v3.x zijn geen codewijzigingen vereist. Werk gewoon uw afhankelijkheden bij om de nieuwe functies te kunnen gebruiken.

Downgrade compatibiliteit (v3.x naar v2.x)

WebJobs.Extensions.DurableTask v3 maakt gebruik van een andere tekstcodering voor de Azure Storage SDK (Base64) vergeleken met v2 (UTF-8). Als u wilt terugkeren van v3.x naar v2.x, gebruikt u de volgende minimale versies om compatibiliteit met eerdere versies te garanderen:

  • In-process model:v2.13.5 of hoger.
  • Isolated worker model:v1.1.5 of hoger (als u teruggaat van v1.2.x of hoger).

Ga terug naar een uitbreidingsbundelversie ouder dan 4.22.0.

Ondersteuning en onderhoud van v2.x

WebJobs.Extensions.DurableTask v2.x blijft beveiligingsupdates en bugfixes ontvangen, zodat uw bestaande toepassingen veilig en stabiel blijven. Alle nieuwe functies en verbeteringen worden echter exclusief toegevoegd aan v3.x. Daarom moet u upgraden naar WebJobs.Extensions.DurableTask v3 zodra u kunt profiteren van de nieuwste mogelijkheden en doorlopende verbeteringen.

Functies die zijn geïntroduceerd in v2.x

De volgende functies zijn beschikbaar in Durable Functions 2.x en hoger, in alle ondersteunde talen.

Opmerking

De .NET API-details in deze sectie zijn niet van toepassing op het geïsoleerde worker model. Zie voor geïsoleerde werkbegeleiding de Durable Functions overzicht van geïsoleerde processen.

Duurzame entiteiten

Durable Functions ondersteunt entiteitsfuncties voor het lezen en bijwerken van kleine stukjes status, ook wel bekend als durable entiteiten. Net als orchestratorfuncties zijn entiteitsfuncties functies met een speciaal triggertype, entiteitstrigger. In tegenstelling tot orchestratorfuncties hebben entiteitsfuncties geen specifieke codebeperkingen. Entiteitsfuncties beheren ook de status expliciet in plaats van de status impliciet weer te geven via de controlestroom.

Zie het artikel over duurzame entiteiten voor meer informatie.

Duurzame HTTP

Durable Functions bevat een functie Durable HTTP waarmee u het volgende kunt doen:

  • HTTP-API's rechtstreeks aanroepen vanuit indelingsfuncties (met enkele gedocumenteerde beperkingen).
  • Implementeer automatische HTTP 202-statuspeiling aan de clientzijde.
  • Gebruik ingebouwde ondersteuning voor Azure Beheerde identiteiten.

Zie het artikel over HTTP-functies voor meer informatie.

Migreren van 1.x naar 2.x

Belangrijk

Versie 1.x van de Azure Functions runtime bereikt het einde van de ondersteuning in September 2026. Als u nog steeds v1.x gebruikt, plant u de migratie binnenkort.

In deze sectie wordt beschreven hoe u uw bestaande versie 1.x Durable Functions migreert naar versie 2.x om te profiteren van de nieuwe functies.

De Durable Functions-extensie upgraden

Installeer de nieuwste 2.x-versie van de Durable Functions bindingsextensie in uw project.

Durable Functions 2.x is beschikbaar vanaf versie 2.x van de Azure Functions extensiebundel.

Python ondersteuning in Durable Functions vereist Durable Functions 2.x of hoger.

Als u de extensiebundelversie in uw project wilt bijwerken, opent u host.json en werkt u de extensionBundle sectie bij om versie 4.x ([4.*, 5.0.0)) te gebruiken.

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

Durable Functions 2.x is beschikbaar vanaf versie 2.x van de Azure Functions extensiebundel.

Als u de extensiebundelversie in uw project wilt bijwerken, opent u host.json en werkt u de extensionBundle sectie bij om versie 4.x ([4.*, 5.0.0)) te gebruiken.

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

Opmerking

Als Visual Studio Code niet de juiste sjablonen weergeeft nadat u de versie van de extensiebundel hebt gewijzigd, laad het venster opnieuw door de opdracht Ontwikkeling: Venster opnieuw laden opdracht (Ctrl+R op Windows en Linux, Command+R in macOS).

Durable Functions 2.x is beschikbaar vanaf versie 2.x van de Azure Functions extensiebundel.

Als u de extensiebundelversie in uw project wilt bijwerken, opent u host.json en werkt u de extensionBundle sectie bij om versie 4.x ([4.*, 5.0.0)) te gebruiken.

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

Werk uw .NET project bij om de nieuwste versie van de extensie Durable Functions bindings te gebruiken.

Zie Register Azure Functions bindingsextensies voor meer informatie.

Uw Durable Functions-code bijwerken

Durable Functions 2.x introduceert verschillende belangrijke wijzigingen. Durable Functions 1.x-toepassingen zijn niet compatibel met Durable Functions 2.x zonder codewijzigingen. In deze sectie vindt u enkele wijzigingen die u moet aanbrengen bij het upgraden van uw versie 1.x-functies naar 2.x.

Host.json-schema

Durable Functions 2.x maakt gebruik van een nieuw host.json schema. De belangrijkste wijzigingen van 1.x zijn:

  • "storageProvider" (en de "azureStorage" subsectie) voor opslagspecifieke configuratie.
  • "tracing" voor tracerings- en logboekregistratieconfiguratie.
  • "notifications" (en de "eventGrid" subsectie) voor de configuratie van Event Grid-meldingen.

Zie de Durable Functions host.json referentiedocumentatie voor meer informatie.

Naamwijzigingen van standaardtaakhub

Als in versie 1.x de naam van een taakhub niet is opgegeven in host.json, is deze standaard ingesteld op DurableFunctionsHub. In versie 2.x is de standaardnaam van de taakhub nu afgeleid van de naam van de functie-app. Als u daarom geen naam voor de taakhub hebt opgegeven bij het upgraden naar 2.x, wordt uw code uitgevoerd met een nieuwe taakhub en hebben alle in-flight indelingen geen toepassing meer die ze verwerkt. Als u dit wilt omzeilen, kunt u de naam van uw taakhub expliciet instellen op de v1.x-standaardwaarde "DurableFunctionsHub", of u kunt onze richtlijnen voor implementatie zonder downtime volgen voor specifieke details over hoe u breaking changes voor lopende orkestraties kunt afhandelen.

Wijzigingen in de openbare interface in Durable Functions

In versie 1.x zijn de verschillende context objecten die worden ondersteund door Durable Functions abstracte basisklassen hebben die zijn bedoeld voor gebruik in eenheidstests. Als onderdeel van Durable Functions 2.x worden deze abstracte basisklassen vervangen door interfaces.

De volgende tabel vertegenwoordigt de belangrijkste wijzigingen:

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

In het geval dat een abstracte basisklasse virtuele methoden bevat, zijn deze virtuele methoden vervangen door extensiemethoden die zijn gedefinieerd in DurableContextExtensions.

function.json wijzigingen

In Durable Functions 1.x gebruikt de orkestratie-clientbinding een type van orchestrationClient. Versie 2.x gebruikt durableClient in plaats daarvan.

Gebeurteniswijzigingen aanbrengen

In Durable Functions 1.x heeft het aanroepen van de raise-gebeurtenis-API en het opgeven van een exemplaar dat niet bestond, geleid tot een stille fout. Vanaf versie 2.x veroorzaakt het aanroepen van een gebeurtenis naar een niet-bestaande orkestratie een uitzondering.