Tipos y características de Durable Functions

Durable Functions es una extensión de Azure Functions. Puede usar Durable Functions para una orquestación con estado de la ejecución de funciones. Una aplicación de funciones duraderas es una solución compuesta de diferentes funciones de Azure Functions. Las funciones pueden desempeñar roles diferentes en una orquestación de Durable Functions.

Actualmente existen cuatro tipos de Durable Functions en Azure Functions: actividad, orquestador, entidad y cliente. En el resto de esta sección se incluyen más detalles sobre los tipos de funciones que participan en una orquestación.

Funciones de Orchestrator

Las funciones de Orchestrator describen cómo se ejecutan las acciones y el orden en que se ejecutan las acciones. Las funciones del orquestador describen la orquestación en código (C# o JavaScript) como se muestra en Patrones de aplicación de Durable Functions. Una orquestación puede tener muchos tipos diferentes de acciones, como funciones de actividad, suborquestaciones, espera por eventos externos, HTTP y temporizadores. Las funciones de orquestador también pueden interactuar con las funciones de entidad.

Nota

Las funciones de orquestador se escriben con código normal, pero hay requisitos estrictos sobre cómo escribir el código. En concreto, el código de la función de orquestador debe ser determinista. Si no se siguen estos requisitos de determinismo, es posible que las funciones de orquestador no se ejecuten correctamente. Puede consultar información detallada sobre estos requisitos y cómo trabajar para cumplirlos en el tema relacionado con las restricciones de código.

Para obtener información más detallada sobre las funciones de orquestador y sus características, consulte el artículo sobre orquestaciones duraderas.

Funciones de actividad

Las funciones de actividad son la unidad básica de trabajo en una orquestación de función durable. Las funciones de actividad son las funciones y tareas que se orquestan en el proceso. Por ejemplo, podría crear una función de orquestador para procesar un pedido. Las tareas implican comprobar el inventario, cobrar al cliente y crear un envío. Cada tarea sería una función de actividad independiente. Estas funciones de actividad se pueden ejecutar en serie, en paralelo, o en una combinación de ambos métodos.

A diferencia de las funciones de orquestador, las funciones de actividad no tienen ninguna restricción en relación al tipo de trabajo que puede realizar en ellas. Las funciones de actividad se utilizan con frecuencia para realizar llamadas de red o ejecutar operaciones de gran consumo de CPU. Una función de actividad también puede devolver datos a la función de orquestador. El marco de las tareas duraderas garantiza que cada función de actividad que se llame, se ejecutará al menos una vez durante una ejecución de la orquestación.

Nota

Dado que las funciones de actividad solo garantizan ejecutarse al menos una vez, se recomienda que la lógica de la función de actividad sea idempotente siempre que sea posible.

Use un desencadenador de actividad para definir una función de actividad. Las funciones de .NET reciben DurableActivityContext como parámetro. También puede enlazar el desencadenador con cualquier otro objeto JSON serializable para pasar en entradas a la función. En JavaScript, puede acceder a la entrada mediante la propiedad <activity trigger binding name> del objeto context.bindings. Solo es posible pasar un único valor a las funciones de actividad. Para pasar varios valores, debe utilizar tuplas, matrices o tipos complejos.

Nota

Solo es posible desencadenar una función de actividad desde una función de orquestador.

Funciones de entidad

Las funciones de entidad definen las operaciones de lectura y actualización de pequeños fragmentos de estado. A menudo, hacemos referencia a estas entidades con estado como entidades duraderas. Al igual que las funciones de orquestador, las de entidad son funciones con un tipo especial de desencadenador, el desencadenador de entidad. También se pueden invocar desde funciones de cliente o desde funciones de orquestador. A diferencia de las funciones de orquestador, las funciones de entidad no tienen restricciones de código específicas. Las funciones de entidad también administran el estado de forma explícita, en lugar de representarlo de forma implícita a través del flujo de control.

Nota

Las funciones de entidad y la funcionalidad relacionada solo están disponibles en Durable Functions 2.0 y versiones superiores.

Para obtener más información sobre las funciones de entidad, consulte el artículo sobre entidades duraderas.

Funciones de cliente

Las funciones de orquestador se desencadenan mediante un enlace de desencadenador de orquestación y las funciones de entidad las desencadena un enlace de desencadenador de entidad. Ambos desencadenadores funcionan al reaccionar a los mensajes que se ponen en cola en un centro de tareas. La principal forma de enviar estos mensajes es mediante un enlace de cliente de orquestador o un enlace de cliente de entidad desde una función de cliente. Todas las funciones que no son de orquestador puede ser funciones de cliente. Por ejemplo, puede desencadenar el orquestador desde una función desencadenada por HTTP, una función desencadenada por el centro de eventos de Azure, etc. Lo que convierte a una función en una función de cliente es el uso del enlace de salida de cliente duradero.

Nota

A diferencia de otros tipos de función, las funciones de orquestador y de entidad no se pueden desencadenar directamente con los botones de Azure Portal. Si quiere probar una función de orquestador o de entidad en Azure Portal, en su lugar debe ejecutar una función de cliente que inicie una función de orquestador o de entidad como parte de su implementación. Para obtener la experiencia de prueba más sencilla, se recomienda una función de desencadenador manual.

Además de desencadenar las funciones de orquestador o de entidad, el enlace de cliente duradero se puede usar para interactuar con las orquestaciones y entidades en ejecución. Por ejemplo, puede consultar, finalizar y generar eventos para las orquestaciones. Para obtener más información acerca de la administración de orquestaciones y entidades, consulte el artículo sobre administración de instancias.

Pasos siguientes

Para empezar, cree la primera función durable en C#, JavaScript, Python, PowerShell, or Java.