Información general sobre las versiones de Durable Functions

Durable Functions es una extensión de Azure Functions y Azure WebJobs que le permite escribir funciones con estado en un entorno sin servidor. La extensión administra el estado, establece puntos de control y reinicia en su nombre. Si todavía no está familiarizado con Durable Functions, vea la documentación de introducción.

Nuevas características de la versión 2.x

En esta sección se describen las características de Durable Functions que se han agregado en la versión 2.x.

Nota:

Esta sección no aplica para Durable Functions en el trabajo aislado de Dotnet. Para ello, consulte la información general sobre procesos aislados de Durable Functions.

Entidades duraderas

En Durable Functions 2.x se ha introducido un nuevo concepto de funciones de entidad.

Las funciones de entidad definen las operaciones de lectura y actualización de pequeños fragmentos de estado, denominados entidades duraderas. Al igual que las funciones de orquestador, las de entidad son funciones con un tipo especial de desencadenador, el desencadenador de entidad. 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.

Para más información, vea el artículo sobre las entidades duraderas.

Durable HTTP

En Durable Functions 2.x se ha incluido una nueva característica denominada Durable HTTP que le permite:

  • Llamar directamente a las API HTTP desde las funciones de orquestación (con algunas limitaciones documentadas).
  • Implementar sondeos automáticos del estado HTTP 202 en el lado cliente.
  • Compatibilidad integrada con Identidades administradas de Azure.

Para obtener más información, consulte el artículo sobre características HTTP.

Migración de 1.x a 2.x

En esta sección se describe cómo migrar la versión 1.x existente de Durable Functions a la versión 2.x para aprovechar las ventajas de las nuevas características.

Actualización de la extensión

Instale la versión 2.x más reciente de la extensión de enlace Durable Functions en el proyecto.

JavaScript, Python y PowerShell

Durable Functions 2.x está disponible a partir de la versión 2.x del conjunto de extensiones de Azure Functions.

La compatibilidad con Python en Durable Functions requiere Durable Functions 2.x o superior.

Para actualizar la versión del conjunto de extensiones en el proyecto, abra host.json y actualice la sección extensionBundle para usar la versión 4.x ([4.*, 5.0.0)).

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

Nota:

Si Visual Studio Code no muestra las plantillas correctas después de cambiar la versión del paquete de extensión, vuelva a cargar la ventana ejecutando el comando Desarrollador: Recargar ventana (Ctrl + R en Windows y Linux, Comando + R en macOS).

Java

Durable Functions 2.x está disponible a partir de la versión 4.x del conjunto de extensiones de Azure Functions. Debe usar el runtime de Azure Functions 4.0 para ejecutar funciones de Java.

Para actualizar la versión del conjunto de extensiones en el proyecto, abra host.json y actualice la sección extensionBundle para usar la versión 4.x ([4.*, 5.0.0)).

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

.NET

Actualice el proyecto de .NET para que use la versión más reciente de la extensión de enlace Durable Functions.

Para más información, vea Registro de las extensiones de enlace de Azure Functions.

Actualización del código

En Durable Functions 2.x se han presentado varios cambios importantes. Las aplicaciones de Durable Functions 1.x no son compatibles con Durable Functions 2.x sin cambios de código. En esta sección se enumeran algunos de los cambios que debe realizar al actualizar las funciones de la versión 1.x a la versión 2.x.

Esquema de host.json

En Durable Functions 2.x se usa un nuevo esquema de host.json. Los principales cambios con respecto a la versión 1.x incluyen:

  • "storageProvider" (y la subsección "azureStorage") para la configuración específica del almacenamiento.
  • "tracing" para la configuración de seguimiento y registro.
  • "notifications" (y la subsección "eventGrid") para la configuración de notificaciones de Event Grid.

Vea la Documentación de referencia para el archivo host.json de Durable Functions para obtener más información.

Cambios de nombre predeterminado de la central de tareas

En la versión 1.x, si no se especificaba un nombre de central de tareas en host.json, se tomaba como valor predeterminado "DurableFunctionsHub". En la versión 2.x, el nombre predeterminado de la central de tareas se deriva ahora del nombre de la aplicación de funciones. Por este motivo, si no ha especificado un nombre de central de tareas al actualizar a la versión 2.x, el código funcionará con la nueva central de tareas, y todas las orquestaciones en curso dejarán de tener una aplicación que las procese. Para solucionar esto, puede establecer explícitamente el nombre de la central de tareas en el valor predeterminado de la versión 1.x, "DurableFunctionsHub", o bien puede seguir nuestras instrucciones de implementación sin tiempo de inactividad para obtener más información sobre cómo administrar los cambios importantes para las orquestaciones en curso.

Cambios en la interfaz pública (solo para .NET)

En la versión 1.x, los distintos objetos de contexto admitidos por Durable Functions tenían clases base abstractas destinadas a usarse en pruebas unitarias. Como parte de Durable Functions 2.x, estas clases base abstractas se han reemplazado con interfaces.

En la tabla siguiente se representan los cambios principales:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient o IDurableClient
DurableOrchestrationContext o DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext o DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

Si una clase base abstracta contiene métodos virtuales, estos métodos virtuales se han reemplazado por los métodos de extensión definidos en DurableContextExtensions.

Cambios en function.json

En Durable Functions 1.x, el enlace del cliente de orquestación usa un type de orchestrationClient. En la versión 2.x se usa durableClient en su lugar.

Cambios en la generación de eventos

En Durable Functions 1.x, llamar a la API para generar evento y especificar una instancia que no existía producía un error silencioso. A partir de la versión 2.x, si se genera un evento en una orquestación no existente, se produce una excepción.