Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Durable Functions es una extensión de Azure Functions que agrega funcionalidades de orquestación con estado a la aplicación de funciones. Una aplicación Durable Functions se compone de diferentes funciones de Azure, cada una de las cuales desempeña un rol específico: orquestador, actividad, entidad o cliente. Estos roles corresponden a tipos de trigger y enlace especializados que proporciona la extensión Durable Functions.
Los SDK de Durable Task permiten crear aplicaciones con estado y tolerantes a errores en cualquier plataforma de proceso. La aplicación define orquestadores, actividades y entidades como clases o funciones que se registran con una instancia de trabajo. Una API de cliente independiente le permite iniciar y administrar instancias de orquestación.
En la tabla siguiente se resumen los componentes de programación principales y sus roles:
| Componente | Función | Definido por |
|---|---|---|
| Orquestador | Coordina la lógica del flujo de trabajo | Desencadenador de orquestación |
| Actividad | Realiza una sola unidad de trabajo | Desencadenador de actividad |
| Entidad | Administra un pequeño fragmento de estado | Desencadenador de entidad |
| Cliente | Inicia y administra orquestaciones y entidades | Enlace de cliente duradero |
| Componente | Función | Definido por |
|---|---|---|
| Orquestador | Coordina la lógica del flujo de trabajo | Una clase o función registrada con el trabajador |
| Actividad | Realiza una sola unidad de trabajo | Una clase o función registrada con el trabajador |
| Entidad | Administra un pequeño fragmento de estado | Una clase registrada con el trabajador |
| Cliente | Inicia y administra orquestaciones y entidades | Interfaz de Programación de Aplicaciones (API) |
Orquestadores
Los orquestadores definen el flujo de trabajo: qué acciones realizar, en qué orden y cómo controlar los resultados. La lógica del orquestador se escribe como código normal mediante construcciones de flujo de control estándar, como bucles, condicionales y bloques try/catch.
Un orquestador puede programar varios tipos de tareas:
- Actividades para ejecutar el trabajo
- Sub-orquestaciones para componer flujos de trabajo más pequeños
- Temporizadores duraderos para retrasos y tiempos de espera
- Eventos externos para esperar señales desde fuera de la orquestación
Los orquestadores también pueden interactuar con entidades.
En Durable Functions, se define un orquestador mediante el enlace de desencadenador de orquestación. El desencadenador proporciona un objeto de contexto que se usa para programar tareas y recibir resultados.
En los SDK de Durable Task, debe definir un orquestador mediante la implementación de una clase o función y registrándolo con el trabajador de Durable Task. El orquestador recibe un objeto de contexto que se usa para programar tareas y recibir resultados.
Importante
El código de Orchestrator debe ser determinista. El tiempo de ejecución de Durable Task utiliza event sourcing y reproducción de eventos para reconstruir el estado del orquestador, de modo que el código no determinista puede causar fallos o interbloqueos. Para obtener instrucciones detalladas, consulte Restricciones de código de Orchestrator.
Para obtener información general completa sobre el comportamiento del orquestador, incluida la reproducción, la identidad de instancia y el control de errores, consulte Orquestaciones duraderas.
Actividades
Las actividades son la unidad de trabajo básica en una orquestación duradera. Cada actividad suele representar una sola tarea, como llamar a una API web, escribir en una base de datos o calcular un resultado. Los orquestadores llaman a actividades para realizar su tarea principal.
Las actividades difieren de los orquestadores en aspectos clave.
- Sin restricciones de código. Los orquestadores deben ser deterministas, pero las actividades pueden ejecutar cualquier código, incluidas las operaciones no deterministas o de larga duración.
- Ejecución al menos una vez. El tiempo de ejecución garantiza que cada actividad se ejecute al menos una vez durante una orquestación. Si se produce un error después de que se complete la actividad pero antes de que se registre el resultado, el tiempo de ejecución podría volver a ejecutarla.
- Responsabilidad única. Cada actividad recibe una entrada y devuelve una salida. Para pasar varios valores, use un tipo complejo o una colección.
Define una función de actividad mediante la vinculación del activador de actividad. El desencadenador ofrece los datos que el orquestador transmitió al programar la actividad.
Para definir una actividad, desarrolle una clase o función y regístrela con el worker de Durable Task. La actividad recibe la entrada que el orquestador pasó al programarlo.
Nota:
Dado que las actividades garantizan solo una ejecución al menos una vez, haga que la lógica de actividad sea idempotente siempre que sea posible. Por ejemplo, use "upserts" en lugar de inserciones o compruebe si hay resultados existentes antes de crear nuevos recursos.
Las actividades se pueden ejecutar en serie, en paralelo o en una combinación de ambas.
Entities
Las entidades administran partes pequeñas y duraderas del estado. Cada entidad tiene una identidad única y un conjunto de operaciones con nombre que pueden leer o actualizar su estado interno. Las entidades difieren de los orquestadores en que administran el estado explícitamente a través de operaciones en lugar de implícitamente a través del flujo de control. También difieren de los orquestadores en que no tienen las mismas restricciones de código: las operaciones de entidad pueden ejecutar cualquier código, incluidas las operaciones no deterministas o de larga duración.
Entre los usos comunes de las entidades se incluyen:
- Agregación de datos de varios orígenes
- Implementación de bloqueos distribuidos o semáforos
- Modelado de objetos con estado, como carritos de compra o sesiones de juego
Las entidades ejecutan operaciones en serie: solo se ejecuta una operación a la vez para una instancia de entidad determinada. Esta ejecución en serie impide conflictos de simultaneidad sin necesidad de bloqueo explícito.
Defina una función de entidad mediante el enlace del desencadenador de entidad.
Nota:
Las funciones de entidad se admiten en .NET, JavaScript/TypeScript, Python y Java, pero no en PowerShell.
Se define una entidad implementando una clase y registrándola con el Durable Task worker.
Nota:
La compatibilidad con entidades está disponible en los SDK de .NET, JavaScript/TypeScript y Python. El SDK de Java no admite actualmente entidades.
Para obtener una guía completa sobre cómo definir, llamar y administrar entidades, consulte Entidades duraderas.
Client
El componente de cliente es cómo interactuar con orquestaciones y entidades desde fuera de la orquestación. Entre las operaciones de cliente comunes se incluyen:
- Programación de nuevas instancias de orquestación
- Consulta del estado de las orquestaciones en ejecución o completadas
- Desencadenar eventos para orquestaciones en espera
- Suspender y reanudar instancias de orquestación
- Finalización de instancias de orquestación
- Operaciones sobre entidades de señalización y lectura del estado de estas entidades
Cualquier función que no sea de orquestador puede actuar como una función cliente. Lo que lo convierte en un cliente es el uso del enlace de salida persistente para clientes. Por ejemplo, puede iniciar una orquestación desde una función desencadenada por HTTP, una función desencadenada por cola o una función desencadenada por el temporizador.
El enlace de cliente duradero también proporciona APIs para interactuar con entidades, incluidas las operaciones de señalización de la entidad y la lectura del estado de la entidad. Para obtener más información, consulte la vinculación del cliente de entidad.
En los SDKs de Durable Task, interactuará con orquestaciones y entidades a través de la clase. Cree una instancia de cliente en su código de aplicación y llame a sus métodos para iniciar, consultar o administrar instancias de orquestación y entidad. El cliente se puede usar desde cualquier parte de la aplicación: un punto de conexión HTTP, un servicio en segundo plano, una aplicación de consola o cualquier otro código.
Para obtener información detallada sobre todas las operaciones de administración de instancias, incluidos ejemplos de código para cada lenguaje, consulte Administración de instancias de orquestación.
Pasos siguientes
Para empezar, cree su primera aplicación de Función Durable.
Más información sobre las orquestaciones duraderas
Introducción a los SDK de Durable Task:
- Inicio rápido del SDK de Durable Task
- Alojar una aplicación SDK de Durable Task en Azure Container Apps
Más información sobre las orquestaciones duraderas