Delen via


Overzicht van Durable Functions-versies

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

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

In deze sectie maakt u kennis met het nieuwe pakket Microsoft.Azure.WebJobs.Extensions.DurableTask v3 (in de volgende secties aangeduid als WebJobs.Extensions.DurableTask) en vindt u meer informatie over de updates en wijzigingen. 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 out-of-process-pakket van Durable Functions .NET, 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.

Nieuwe Azure Storage SDK

Durable Functions maakt standaard gebruik van Azure Storage als een opslagback-end om de toepassingsstatus duurzaam op te slaan. In WebJobs.Extensions.DurableTask v3 is de Back-end van Azure Storage bijgewerkt om de nieuwste versies van de Azure Storage SDK's te gebruiken: Azure.Data.Tables, Azure.Storage.Blobs en Azure.Storage.Queues. De nieuwe Azure Storage-SDK's zijn veiliger en bieden verbeterde ondersteuning voor beheerde identiteiten. Ze bieden ook betere prestaties, efficiëntere gegevensverwerking en andere nieuwste opslagfuncties.

Verbeterde kostenefficiëntie voor de Back-end van Azure Storage

In de Back-end van Azure Storage is Partition Manager verantwoordelijk voor het distribueren van partities/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 Tables 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 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 gepland is om te eindigen in 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 komt, Durable Functions ook de ondersteuning voor runtime v1 wegneemt.

.NET Framework-update

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

Migratie van WebJobs.Extensions.DurableTask v2.x naar v3.x

Migratie van WebJobs.Extensions.DurableTask v2.x naar v3.x is ontworpen om eenvoudig te zijn zonder dat er codewijzigingen nodig zijn, omdat de wijzigingen zich op de achtergrond bevinden. Werk uw afhankelijkheden bij zodat u kunt profiteren van de nieuwe functies en verbeteringen in v3.x.

Opmerking

WebJobs.Extensions.DurableTask v3 maakt gebruik van de nieuwste versie van de Azure Storage SDK, die een andere tekstcodering (Base64) heeft in vergelijking met de versie die wordt gebruikt in v2 (UTF-8). Als u een downgrade wilt uitvoeren van v3.x naar v2.x, moet u ten minste v2.13.5 gebruiken om compatibiliteit met eerdere versies te garanderen. Voor .NET-out-of-process-gebruikers met Microsoft.Azure.Functions.Worker.Extensions.DurableTask kunt u downgraden naar v1.1.5 of hoger als u teruggaat van v1.2.x of hoger.

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.

Nieuwe functies in Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x

In deze sectie worden de functies van Durable Functions beschreven die zijn toegevoegd in versie 2.x.

Opmerking

Dit onderdeel is niet van toepassing op Durable Functions in een dotnet geïsoleerde worker. Voor meer informatie, zie het overzicht van duurzame functies voor geïsoleerde processen.

Duurzame entiteiten

In Durable Functions 2.x hebben we een nieuw concept voor entiteitsfuncties geïntroduceerd.

Entiteitsfuncties definiëren bewerkingen voor het lezen en bijwerken van kleine stukjes status, ook wel duurzame entiteiten genoemd. 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

In Durable Functions 2.x hebben we een nieuwe Durable HTTP-functie geïntroduceerd 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.
  • Ingebouwde ondersteuning voor Azure Managed Identities.

Zie het artikel over HTTP-functies voor meer informatie.

Migreren van 1.x naar 2.x

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 extensie upgraden

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

JavaScript, Python en PowerShell

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

Opmerking

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

Java

Durable Functions 2.x is beschikbaar vanaf versie 4.x van de Azure Functions-extensiebundel. U moet de Azure Functions 4.0-runtime gebruiken om Java-functies uit te voeren.

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

.NET

Werk uw .NET-project bij om de nieuwste versie van de Durable Functions-bindingsextensie te gebruiken.

Zie Azure Functions-bindingsextensies registreren voor meer informatie.

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

Raadpleeg de naslagdocumentatie voor Durable Functions host.json 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 meer informatie over het afhandelen van belangrijke wijzigingen voor lopende orkestraties.

Wijzigingen in openbare interface (alleen.NET)

In versie 1.x hebben de verschillende contextobjecten die worden ondersteund door Durable Functions abstracte basisklassen 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 maakt de orchestration-client-binding gebruik van een type van orchestrationClient. Versie 2.x gebruikt durableClient in plaats daarvan.

Gebeurteniswijzigingen aanbrengen

In Durable Functions 1.x leidde het aanroepen van de raise-event API en het specificeren van een niet-bestaand exemplaar tot een stille fout. Vanaf versie 2.x veroorzaakt het aanroepen van een gebeurtenis naar een niet-bestaande orkestratie een uitzondering.