Vue d’ensemble des versions de Durable Functions

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

Nouvelles fonctionnalités de la version 2.x

Cette section décrit les fonctionnalités de Durable Functions ajoutées à la version 2.x.

Notes

Cette section ne s’applique pas aux Durable Functions dans le Worker isolé dotnet. Pour cela, consultez la Vue d’ensemble des processus isolés des Durables Functions.

Entités durables

Dans Durable Functions 2.x, nous avons introduit un nouveau concept de fonctions d’entité.

Les fonctions d’entité définissent les opérations pour la lecture et la mise à jour de petits éléments d’état, connus sous le nom d’entités durables. Comme les fonctions d’orchestrateur, les fonctions d’entité sont des fonctions ayant un type spécial de déclencheur, déclencheur d’entité. Contrairement aux fonctions orchestrator, 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 plus d’informations, consultez l’article Entités durables.

Fonctionnalité HTTP durable

Dans Durable Functions v2.x, nous avons introduit une nouvelle fonctionnalité HTTP durable qui vous permet d’effectuer les opérations suivantes :

  • Appeler les API HTTP directement à partir des fonctions d’orchestration (avec certaines limitations documentées).
  • Implémenter une interrogation d’état HTTP 202 automatique côté client.
  • Bénéficier d’une prise en charge intégrée des identités managées Azure.

Pour plus d’informations, consultez cet article sur les fonctionnalités HTTP.

Migrer de la version 1.x à 2.x

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

Mettre à niveau l’extension

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

JavaScript, Python, et PowerShell

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

La prise en charge de Python dans Durable Functions nécessite Durable Functions 2.x ou une version ultérieure.

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

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

Remarque

Si Visual Studio Code n’affiche pas les modèles appropriés une fois que vous avez changé la version du bundle d’extensions, rechargez la fenêtre en exécutant la commande Développeur : Recharger la fenêtre (Ctrl+R sur Windows et Linux, Commande+R sur macOS).

Java

Durable Functions 2.x est disponible à partir de la version 4.x du pack d’extension Azure Functions. Vous devez utiliser le runtime d’Azure Functions 4.0 pour exécuter des fonctions Java.

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

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

.NET

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

Pour en savoir plus, consultez Inscrire des extensions de liaison Azure Functions.

Mettre à jour votre code

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

Schéma Host.json

Durable Functions 2.x utilise un nouveau schéma host.json. Les principales modifications apportées par rapport à 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 de notification de grille d’événement.

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

Modification 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 le fichier host.json, la valeur par défaut est « DurableFunctionsHub ». Dans la version 2.x, le nom du hub de tâches par défaut est désormais dérivé du nom de l’application de fonction. Pour cette raison, si vous n’avez pas spécifié de nom de hub de tâches lors de la mise à niveau vers 2.x, votre code fonctionnera avec le nouveau hub de tâches, et toutes les orchestrations en cours ne disposeront plus d’une application qui les traite. 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 de l’interface publique (.NET uniquement)

Dans la version 1.x, les divers objets de contexte pris en charge par Durable Functions avaient des classes abstraites prévues pour une utilisation lors des 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 les méthodes d’extension définies dans DurableContextExtensions.

modifications de 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.