Types et fonctionnalités de Durable Functions

Durable Functions est une extension d’Azure Functions. Vous pouvez utiliser Durable Functions pour effectuer une orchestration avec état d’une exécution de fonction. Une application de fonction durable est une solution composée de différentes fonctions Azure. Les fonctions peuvent jouer différents rôles dans le cadre d’une orchestration de fonction durable.

Il existe actuellement 4 types de fonctions durables dans Azure Functions : les fonctions d’activité, les fonctions d’orchestrateur, les fonctions d’entité et les fonctions clientes. Le reste de cette section décrit en détail les types de fonctions impliqués dans une orchestration.

Fonctions d’orchestrateur

Les fonctions d’orchestrateur décrivent la façon dont les actions sont exécutées et l’ordre dans lequel elles sont exécutées. Les fonctions d’orchestrateur décrivent l’orchestration dans le code (C# ou JavaScript), comme indiqué dans les modèles d’application Durable Functions. Une orchestration peut avoir de nombreux types d’actions différents, comme des fonctions d’activité, des orchestrations secondaires, l’attente d’événements externes, HTTP et des minuteurs. Les fonctions d’orchestrateur peuvent également interagir avec des fonctions d’entité.

Notes

Les fonctions d’orchestrateur sont écrites à l’aide de code ordinaire, mais des conditions strictes s’appliquent à l’écriture du code. Plus précisément, le code de la fonction d’orchestrateur doit être déterministe. Le non-respect de ces conditions de déterminisme peut entraîner l’échec de l’exécution des fonctions d’orchestrateur. Vous trouverez des informations détaillées sur ces conditions et sur la façon de les contourner dans la rubrique sur les contraintes de code.

Pour plus d’informations sur les fonctions d’orchestrateur et leurs fonctionnalités, consultez l’article Orchestrations durables.

Fonctions d’activité

Les fonctions d’activité sont à la base de l’orchestration de fonction durable. Les fonctions d’activité correspondent aux fonctions et aux tâches qui sont orchestrées dans le processus. Par exemple, vous pouvez créer une fonction d’orchestrateur pour traiter une commande. Ces tâches impliquent la vérification de l’inventaire, la facturation du client et l’organisation de l’expédition. Chacune de ces tâches correspond à une fonction d’activité distincte. Ces fonctions d’activité peuvent être exécutées en série, en parallèle ou dans une combinaison de ces deux modes.

À la différence des fonctions d’orchestrateur, les fonctions d’activité ne sont pas limitées quant au type de travail qu’elles vous permettent d’effectuer. Les fonctions d’activité sont fréquemment utilisées pour effectuer des appels réseau ou exécuter des opérations gourmandes en processeur. Une fonction d’activité peut également retourner des données à la fonction d’orchestrateur. L’infrastructure Durable Task Framework garantit que chaque fonction d’activité appelée est exécutée au moins une fois au cours de l’exécution d’une orchestration.

Notes

Comme les fonctions d’activité garantissent uniquement une exécution au moins une fois, nous vous recommandons de rendre idempotente votre logique de fonction d’activité chaque fois que cela est possible.

Utilisez un déclencheur d’activité pour définir une fonction d’activité. Les fonctions .NET reçoivent DurableActivityContext en tant que paramètre. Vous pouvez également lier le déclencheur à un autre objet sérialisable au format JSON pour transmettre des entrées à la fonction. En JavaScript, vous pouvez accéder à l’entrée via la propriété <activity trigger binding name> de l’objet context.bindings. Une seule valeur peut être passée aux fonctions d’activité. Pour passer plusieurs valeurs, vous devez utiliser des tuples, des tableaux ou des types complexes.

Notes

Vous ne pouvez déclencher une fonction d’activité qu’à partir d’une fonction d’orchestrateur.

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. Nous faisons souvent référence à ces entités avec état en tant qu’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é. Elles peuvent également être appelées à partir de fonctions clientes ou de fonctions d’orchestrateur. Contrairement aux fonctions d’orchestrateur, les fonctions d’entité n’ont pas de contraintes 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.

Notes

Les fonctions d’entité et les fonctionnalités associées sont uniquement disponibles dans Durable Functions 2.0 et versions ultérieures.

Pour plus d’informations sur les fonctions d’entité, consultez l’article Entités durables.

Fonctions clientes

Les fonctions d’orchestrateur sont déclenchées par une liaison de déclencheur d’orchestration et les fonctions d’entité sont déclenchées par une liaison de déclencheur d’entité. Ces deux déclencheurs fonctionnent en réagissant aux messages mis en file d’attente dans un hub de tâches. Le principal moyen de fournir ces messages est d’utiliser une liaison de client d’orchestrateur ou une liaison de client d’entité à partir d’une fonction cliente. Toute fonction non-orchestrateur peut être une fonction cliente. Par exemple, vous pouvez déclencher l’orchestrateur à partir d’une fonction déclenchée par HTTP, d’une fonction déclenchée par Azure Event Hub, etc. Ce qui fait d’une fonction une fonction cliente est son utilisation de la liaison de sortie du client durable.

Notes

Contrairement aux autres types de fonction, les fonctions d’orchestrateur et d’entité ne peuvent pas être déclenchées directement à l’aide des boutons du portail Azure. Si vous souhaitez tester une fonction d’orchestrateur ou d’entité dans le portail Azure, vous devez exécuter à la place une fonction cliente qui démarre une fonction d’orchestrateur ou d’entité dans le cadre de son implémentation. Pour la plus simple expérience de test, une fonction de déclencheur manuel est recommandée.

En plus de déclencher des fonctions d’orchestrateur ou d’entité, la liaison de client durable peut être utilisée pour interagir avec des orchestrations et des entités en cours d’exécution. Par exemple, les orchestrations peuvent être interrogées, arrêtées et faire l’objet d’événements déclenchés. Pour plus d’informations sur la gestion des orchestrations et des entités, consultez l’article Gestion d’instance.

Étapes suivantes

Pour bien démarrer, créez votre première fonction durable en C#, JavaScript, Python, PowerShell ou Java.