Durable Functions versions et guide de migration

Durable Functions est une extension de Azure Functions et Azure WebJobs qui vous permet d’écrire des fonctions avec état dans un environnement serverless. L’extension gère l’état, les points de contrôle et les redémarrages à votre place. Si vous n'êtes pas familiarisé avec Durable Functions, consultez la documentation overview.

Résumé de la version

Version Statut Principales modifications
v3.x Actuel (recommandé) Mise à jour stockage Azure SDK, amélioration de l’efficacité des coûts, aucune modification du code à mettre à niveau à partir de v2.x
v2.x Maintenu (correctifs de sécurité et de bogues uniquement) Entités durables, HTTP durable
v1.x Fin du support en septembre 2026 Legacy

Nouveautés de la version 3.x

Microsoft.Azure. WebJobs.Extensions.DurableTask v3 package (appelé WebJobs.Extensions.DurableTask dans les sections suivantes) est la version recommandée actuelle. La mise à niveau à partir de v2.x ne nécessite aucune modification du code . Vous devez uniquement mettre à jour vos dépendances de package. Cette mise à jour est considérée comme un changement majeur pour les clients exécutant des applications C# persistantes qui utilisent le modèle in-process.

Note

Le package Durable Functions .NET out-of-process, Microsoft.Azure. Functions.Worker.Extensions.DurableTask, fait référence à Microsoft. Azure. WebJobs.Extensions.DurableTask comme assembly sous-jacent. Ainsi, cette mise à jour s’applique également à Microsoft. Azure. Functions.Worker.Extensions.DurableTask, à partir de la version 1.2.x.

Kit de développement logiciel (SDK) stockage Azure mis à jour

Par défaut, Durable Functions utiliser stockage Azure en tant que back-end de stockage pour enregistrer durablement l’état de l’application. Dans WebJobs.Extensions.DurableTask v3, le serveur principal stockage Azure a été mis à niveau pour utiliser les dernières versions des kits SDK stockage Azure : Azure. Data.Tables, Azure. Storage.Blobs et Azure. Storage.Queues. Ces kits SDK offrent une prise en charge améliorée de l’identité managée, de meilleures performances, une gestion des données plus efficace et une sécurité améliorée par rapport aux packages hérités Microsoft.Azure.Storage.* utilisés dans v2.x.

Amélioration de l’efficacité des coûts (pour le fournisseur de stockage Azure)

Dans le backend stockage Azure, le Gestionnaire de partitions est chargé de distribuer les partitions et files d’attente de contrôle entre les travailleurs. Le package WebJobs.Extensions.DurableTask v3 utilise le gestionnaire de partitions V3 par défaut, qui est une nouvelle conception tirant parti des tables Azure pour gérer des affectations de partition au lieu des baux Blob d'Azure. Cette conception peut réduire considérablement les coûts de stockage tout en facilitant le débogage. Lorsque partition Manager V3 est utilisé, une nouvelle table nommée Partitionsest créée dans votre compte de stockage, ce qui vous permet de vérifier facilement les informations de partition.

Suppression de la prise en charge du runtime Azure Functions v1

WebJobs.Extensions.DurableTask v3 ne prend plus en charge la version 1.x du runtime de Azure Functions, prise en charge prévue pour se terminer par September 2026. Si vous devez utiliser functions runtime v1, utilisez une version d’extension Durable Functions inférieure à v2.11.0. N'oubliez pas que lorsque la fin de prise en charge planifiée arrivera, Durable Functions abandonnera également son support pour l'environnement d'exécution v1.

Mise à jour de la cible de l'environnement d'exécution .NET

WebJobs.Extensions.DurableTask v3 met à jour le runtime cible de .NET Core 3.1 à .NET 6, offrant des performances améliorées et une compatibilité améliorée avec les fonctionnalités et bibliothèques modernes .NET. Cette mise à jour s’aligne sur les futures versions des offres groupées d’extensions Azure Functions.

Migrer de v2.x vers v3.x

La migration de v2.x vers v3.x ne nécessite aucune modification du code. Il vous suffit de mettre à jour vos dépendances pour commencer à utiliser les nouvelles fonctionnalités.

Mise à jour vers Azure Functions bundle d’extensions version 4.22.0 ou ultérieure.

Rétrograder la compatibilité (v3.x vers v2.x)

WebJobs.Extensions.DurableTask v3 utilise un encodage de texte différent pour le SDK stockage Azure (Base64) par rapport à v2 (UTF-8). Si vous devez revenir de v3.x à v2.x, utilisez les versions minimales suivantes pour garantir la compatibilité descendante :

  • modèle In-process :v2.13.5 ou version ultérieure.
  • Modèle de travail isolé :v1.1.5 ou version ultérieure (si vous rétablissez la version v1.2.x ou ultérieure).

Revenez à une version de bundle d’extension antérieure à la version 4.22.0.

Prise en charge et maintenance de v2.x

WebJobs.Extensions.DurableTask v2.x continue de recevoir des mises à jour de sécurité et des correctifs de bogues, ce qui garantit que vos applications existantes restent sécurisées et stables. Toutefois, toutes les nouvelles fonctionnalités et améliorations sont ajoutées exclusivement à v3.x. Pour cette raison, vous devez effectuer une mise à niveau vers WebJobs.Extensions.DurableTask v3 dès que vous pouvez tirer parti des dernières fonctionnalités et des améliorations en cours.

Fonctionnalités introduites dans v2.x

Les fonctionnalités suivantes sont disponibles dans Durable Functions 2.x et versions ultérieures, dans toutes les langues prises en charge.

Note

Les détails de l'API .NET in-process dans cette section ne s'appliquent pas au modèle de travailleur isolé. Pour des conseils sur le travailleur isolé, consultez l’aperçu du processus isolé des Durable Functions.

Entités durables

Durable Functions prend en charge les fonctions entité pour lire et mettre à jour de petits éléments d’état, appelés entités durables. Comme les fonctions d’orchestrateur, les fonctions d’entité sont des fonctions avec un type de déclencheur spécial, un déclencheur d’entité. Contrairement aux fonctions d’orchestrateur, les fonctions d’entité n’ont pas de contraintes de code spécifiques. Les fonctions d’entité gèrent également l’état explicitement plutôt que de représenter implicitement l’état via le flux de contrôle.

Pour en savoir plus, consultez l’article sur les entités durables .

Fonctionnalité HTTP durable

Durable Functions inclut une fonctionnalité HTTP Durable HTTP qui vous permet de :

  • Appelez des API HTTP directement à partir de fonctions d’orchestration (avec certaines limitations documentées).
  • Implémentez le sondage automatique du statut HTTP 202 du côté client.
  • Utilisez la prise en charge intégrée des Identités Managées Azure.

Pour en savoir plus, consultez l’article sur les fonctionnalités HTTP .

Migrer de 1.x à 2.x

Important

La version 1.x du runtime de Azure Functions atteint la fin de la prise en charge dans September 2026. Si vous êtes toujours sur v1.x, planifiez bientôt votre migration.

Cette section explique comment migrer votre version 1.x existante Durable Functions vers la version 2.x pour tirer parti des nouvelles fonctionnalités.

Mettre à niveau l’extension Durable Functions

Installez la dernière version 2.x de l’extension de liaisons Durable Functions dans votre projet.

Durable Functions 2.x est disponible à partir de la version 2.x du bundle d’extensions Azure Functions.

La prise en charge de Python dans les Fonctions Durables nécessite les Fonctions Durables 2.x ou une version ultérieure.

Pour mettre à jour la version du bundle d’extensions dans votre projet, ouvrez host.json et mettez à jour la section pour utiliser la extensionBundle version 4.x ([4.*, 5.0.0)).

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

Durable Functions 2.x est disponible à partir de la version 2.x du bundle d’extensions Azure Functions.

Pour mettre à jour la version du bundle d’extensions dans votre projet, ouvrez host.json et mettez à jour la section pour utiliser la extensionBundle version 4.x ([4.*, 5.0.0)).

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

Note

Si Visual Studio Code n’affiche pas les modèles appropriés après avoir modifié la version du bundle d’extension, rechargez la fenêtre en exécutant la commande Developer : Reload Window (Ctrl+R sur Windows et Linux, Command+R sur macOS).

Durable Functions 2.x est disponible à partir de la version 2.x du bundle d’extensions Azure Functions.

Pour mettre à jour la version du bundle d’extensions dans votre projet, ouvrez host.json et mettez à jour la section pour utiliser la extensionBundle version 4.x ([4.*, 5.0.0)).

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

Mettez à jour votre projet .NET pour utiliser la dernière version de l’extension liaisons Durable Functions.

Pour plus d’informations, consultez Enregistrer les extensions de liaison Azure Functions.

Mettre à jour votre code Durable Functions

Durable Functions 2.x introduit plusieurs changements cassants. Durable Functions applications 1.x ne sont pas compatibles avec Durable Functions 2.x sans modification du code. Cette section répertorie certaines des modifications que vous devez apporter lors de la mise à niveau de vos fonctions version 1.x vers 2.x.

Schéma Host.json

Durable Functions 2.x utilise un nouveau schéma de host.json. Les principales modifications de la version 1.x sont les suivantes :

  • "storageProvider" (et la sous-section "azureStorage") pour la configuration spécifique au stockage.
  • "tracing" pour la configuration du suivi et de la journalisation.
  • "notifications" (et la sous-section "eventGrid") pour la configuration des notifications Event Grid.

Pour plus d’informations, consultez la documentation de référence Durable Functions host.json.

Modifications du nom du hub de tâches par défaut

Dans la version 1.x, si un nom de hub de tâches n’a pas été spécifié dans host.json, il a été défini par défaut sur « DurableFunctionsHub ». Dans la version 2.x, le nom du hub de tâches par défaut est maintenant dérivé du nom de l’application de fonction. En raison de cela, si vous n'avez pas spécifié de nom de hub de tâches lors de la mise à niveau vers la version 2.x, votre code fonctionnera avec un nouveau hub de tâches, et toutes les orchestrations en cours d'exécution ne seront plus traitées par une application. Pour contourner ce problème, vous pouvez définir explicitement le nom de votre hub de tâches sur la valeur par défaut « DurableFunctionsHub » de la version 1.x, ou vous pouvez suivre notre guide de déploiement sans interruption de service pour plus d’informations sur la gestion des changements cassants pour les orchestrations en cours.

Modifications apportées à l’interface publique dans Durable Functions

Dans la version 1.x, les différents objets context pris en charge par Durable Functions ont des classes de base abstraites destinées à être utilisées dans les tests unitaires. Dans le cadre de Durable Functions 2.x, ces classes de base abstraites sont remplacées par des interfaces.

Le tableau suivant représente les principales modifications :

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

Dans le cas où une classe de base abstraite contenait des méthodes virtuelles, ces méthodes virtuelles ont été remplacées par des méthodes d’extension définies dans DurableContextExtensions.

Changements dans function.json

Dans Durable Functions 1.x, la liaison du client d’orchestration utilise un type de orchestrationClient. La version 2.x utilise durableClient à la place.

Changements liés au déclenchement d’événements

Dans Durable Functions 1.x, l’appel de l’API de déclenchement d’événement et la spécification d’une instance qui n’existait pas a occasionné un échec silencieux. À partir de 2.x, le déclenchement d’un événement pour une orchestration inexistante entraîne une exception.