Types et fonctionnalités de Durable FunctionsDurable Functions types and features

Durable Functions est une extension d’Azure Functions.Durable Functions is an extension of Azure Functions. Vous pouvez utiliser Durable Functions pour effectuer une orchestration avec état d’une exécution de fonction.You can use Durable Functions for stateful orchestration of function execution. Une application de fonction durable est une solution composée de différentes fonctions Azure.A durable function app is a solution that's made up of different Azure functions. Les fonctions peuvent jouer différents rôles dans le cadre d’une orchestration de fonction durable.Functions can play different roles in a durable function orchestration.

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.There are currently four durable function types in Azure Functions: activity, orchestrator, entity, and client. Le reste de cette section décrit en détail les types de fonctions impliqués dans une orchestration.The rest of this section goes into more details about the types of functions involved in an orchestration.

Fonctions d’orchestrateurOrchestrator functions

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.Orchestrator functions describe how actions are executed and the order in which actions are executed. Les fonctions d’orchestrateur décrivent l’orchestration dans le code (C# ou JavaScript), comme indiqué dans les modèles d’application Durable Functions.Orchestrator functions describe the orchestration in code (C# or JavaScript) as shown in Durable Functions application patterns. 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.An orchestration can have many different types of actions, including activity functions, sub-orchestrations, waiting for external events, HTTP, and timers. Les fonctions d’orchestrateur peuvent également interagir avec des fonctions d’entité.Orchestrator functions can also interact with entity functions.

Notes

Les fonctions d’orchestrateur sont écrites à l’aide de code ordinaire, mais des conditions strictes s’appliquent à l’écriture du code.Orchestrator functions are written using ordinary code, but there are strict requirements on how to write the code. Plus précisément, le code de la fonction d’orchestrateur doit être déterministe.Specifically, orchestrator function code must be deterministic. Le non-respect de ces conditions de déterminisme peut entraîner l’échec de l’exécution des fonctions d’orchestrateur.Failing to follow these determinism requirements can cause orchestrator functions to fail to run correctly. 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.Detailed information on these requirements and how to work around them can be found in the code constraints topic.

Pour plus d’informations sur les fonctions d’orchestrateur et leurs fonctionnalités, consultez l’article Orchestrations durables.For more detailed information on orchestrator functions and their features, see the Durable orchestrations article.

Fonctions d’activitéActivity functions

Les fonctions d’activité sont à la base de l’orchestration de fonction durable.Activity functions are the basic unit of work in a durable function orchestration. Les fonctions d’activité correspondent aux fonctions et aux tâches qui sont orchestrées dans le processus.Activity functions are the functions and tasks that are orchestrated in the process. Par exemple, vous pouvez créer une fonction d’orchestrateur pour traiter une commande.For example, you might create an orchestrator function to process an order. Ces tâches impliquent la vérification de l’inventaire, la facturation du client et l’organisation de l’expédition.The tasks involve checking the inventory, charging the customer, and creating a shipment. Chacune de ces tâches correspond à une fonction d’activité distincte.Each task would be a separate activity function. Ces fonctions d’activité peuvent être exécutées en série, en parallèle ou dans une combinaison de ces deux modes.These activity functions may be executed serially, in parallel, or some combination of both.

À 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.Unlike orchestrator functions, activity functions aren't restricted in the type of work you can do in them. Les fonctions d’activité sont fréquemment utilisées pour effectuer des appels réseau ou exécuter des opérations gourmandes en processeur.Activity functions are frequently used to make network calls or run CPU intensive operations. Une fonction d’activité peut également retourner des données à la fonction d’orchestrateur.An activity function can also return data back to the orchestrator function. 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.The Durable Task Framework guarantees that each called activity function will be executed at least once during an orchestration's execution.

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.Because activity functions only guarantee at least once execution, we recommend you make your activity function logic idempotent whenever possible.

Utilisez un déclencheur d’activité pour définir une fonction d’activité.Use an activity trigger to define an activity function. Les fonctions .NET reçoivent DurableActivityContext en tant que paramètre..NET functions receive a DurableActivityContext as a parameter. Vous pouvez également lier le déclencheur à un autre objet sérialisable au format JSON pour transmettre des entrées à la fonction.You can also bind the trigger to any other JSON-serializeable object to pass in inputs to the function. En JavaScript, vous pouvez accéder à l’entrée via la propriété <activity trigger binding name> de l’objet context.bindings.In JavaScript, you can access an input via the <activity trigger binding name> property on the context.bindings object. Une seule valeur peut être passée aux fonctions d’activité.Activity functions can only have a single value passed to them. Pour passer plusieurs valeurs, vous devez utiliser des tuples, des tableaux ou des types complexes.To pass multiple values, you must use tuples, arrays, or complex types.

Notes

Vous ne pouvez déclencher une fonction d’activité qu’à partir d’une fonction d’orchestrateur.You can trigger an activity function only from an orchestrator function.

Fonctions d’entitéEntity functions

Les fonctions d’entité définissent les opérations pour la lecture et la mise à jour de petits éléments d’état.Entity functions define operations for reading and updating small pieces of state. Nous faisons souvent référence à ces entités avec état en tant qu’entités durables.We often refer to these stateful entities as durable entities. Comme les fonctions d’orchestrateur, les fonctions d’entité sont des fonctions ayant un type spécial de déclencheur, déclencheur d’entité.Like orchestrator functions, entity functions are functions with a special trigger type, entity trigger. Elles peuvent également être appelées à partir de fonctions clientes ou de fonctions d’orchestrateur.They can also be invoked from client functions or from orchestrator functions. Contrairement aux fonctions d’orchestrateur, les fonctions d’entité n’ont pas de contraintes code spécifiques.Unlike orchestrator functions, entity functions do not have any specific code constraints. 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.Entity functions also manage state explicitly rather than implicitly representing state via control flow.

Notes

Les fonctions d’entité et les fonctionnalités associées sont uniquement disponibles dans Durable Functions 2.0 et versions ultérieures.Entity functions and related functionality is only available in Durable Functions 2.0 and above.

Pour plus d’informations sur les fonctions d’entité, consultez l’article Entités durables.For more information about entity functions, see the Durable Entities article.

Fonctions clientesClient functions

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é.Orchestrator functions are triggered by an orchestration trigger binding and entity functions are triggered by an entity trigger binding. Ces deux déclencheurs fonctionnent en réagissant aux messages mis en file d’attente dans un hub de tâches.Both of these triggers work by reacting to messages that are enqueued into a task hub. 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.The primary way to deliver these messages is by using an orchestrator client binding or an entity client binding from within a client function. Toute fonction non-orchestrateur peut être une fonction cliente.Any non-orchestrator function can be a client function. 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.For example, You can trigger the orchestrator from an HTTP-triggered function, an Azure Event Hub triggered function, etc. What makes a function a client function is its use of the durable client output binding.

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.Unlike other function types, orchestrator and entity functions cannot be triggered directly using the buttons in the Azure Portal. 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.If you want to test an orchestrator or entity function in the Azure Portal, you must instead run a client function that starts an orchestrator or entity function as part of its implementation. Pour la plus simple expérience de test, une fonction de déclencheur manuel est recommandée.For the simplest testing experience, a manual trigger function is recommended.

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.In addition to triggering orchestrator or entity functions, the durable client binding can be used to interact with running orchestrations and entities. Par exemple, les orchestrations peuvent être interrogées, arrêtées et faire l’objet d’événements déclenchés.For example, orchestrations can be queried, terminated, and can have events raised to them. Pour plus d’informations sur la gestion des orchestrations et des entités, consultez l’article Gestion d’instance.For more information on managing orchestrations and entities, see the Instance management article.

Étapes suivantesNext steps

Pour bien démarrer, créez votre première fonction durable en C# ou en JavaScript.To get started, create your first durable function in C# or JavaScript.