Versiones y guía de migración de Durable Functions

Durable Functions es una extensión de Azure Functions y Azure WebJobs que permite escribir funciones con estado en un entorno sin servidor. La extensión administra el estado, establece puntos de control y reinicia por usted. Si aún no está familiarizado con Durable Functions, consulte la documentación general en overview.

Resumen de la versión

Versión Estado Cambios clave
v3.x Actual (recomendado) Se ha actualizado Azure Storage SDK, se ha mejorado la rentabilidad, no hay cambios en el código para actualizar desde la versión 2.x.
v2.x Mantenido (solo correcciones de errores y seguridad) Entidades duraderas, HTTP duradero
v1.x Fin del soporte septiembre de 2026 Legacy

Novedades de v3.x

El Microsoft.Azure. WebJobs.Extensions.DurableTask v3 paquete (denominado WebJobs.Extensions.DurableTask en secciones posteriores) es la versión recomendada actual. La actualización desde v2.x no requiere ningún cambio de código ; solo necesita actualizar las dependencias del paquete. Esta actualización solo se considera un cambio importante para los clientes que ejecutan aplicaciones durables de C# que usan el modelo en proceso.

Nota:

El Durable Functions .NET paquete fuera de proceso, Microsoft.Azure. Functions.Worker.Extensions.DurableTask, hace referencia a Microsoft. Azure. WebJobs.Extensions.DurableTask como su ensamblado subyacente. Por lo tanto, esta actualización también se aplica a Microsoft. Azure. Functions.Worker.Extensions.DurableTask, a partir de la versión 1.2.x.

SDK de Azure Storage actualizado

De forma predeterminada, Durable Functions usar Azure Storage como back-end de almacenamiento para guardar de forma duradera el estado de la aplicación. En WebJobs.Extensions.DurableTask v3, el back-end de Azure Storage se actualizó para usar las versiones más recientes de los SDK de Azure Storage: Azure. Data.Tables, Azure. Storage.Blobs y Azure. Storage.Queues. Estos SDK ofrecen compatibilidad mejorada con identidad administrada, un mejor rendimiento, un control de datos más eficaz y una seguridad mejorada en comparación con los paquetes heredados de Microsoft.Azure.Storage.* usados en v2.x.

Mejora de la eficiencia de costos (para el proveedor de Azure Storage)

En el backend de Azure Storage, el Administrador de particiones es responsable de distribuir particiones y colas de control entre los trabajadores. El paquete WebJobs.Extensions.DurableTask v3 usa el Administrador de particiones V3 de forma predeterminada, que es un nuevo diseño que utiliza Azure Tables para administrar asignaciones de particiones en lugar de concesiones de blobs de Azure. Este diseño puede reducir significativamente los costos de almacenamiento a la vez que facilita la depuración. Cuando se usa partition Manager V3, se crea una nueva tabla, denominada Partitions, en la cuenta de almacenamiento, lo que le permite comprobar fácilmente la información de partición.

Se ha quitado la compatibilidad con el entorno de ejecución de Azure Functions v1

WebJobs.Extensions.DurableTask v3 ya no admite la versión 1.x del entorno de ejecución de Azure Functions, compatibilidad con la que está programado finalizar en September 2026. Si debe usar functions runtime v1, use una versión de extensión de Durable Functions inferior a v2.11.0. Tenga en cuenta que, cuando llegue el final del soporte programado, Durable Functions también dejará de ser compatible con el entorno de ejecución v1.

Actualización del objetivo de la ejecución en tiempo real de .NET

WebJobs.Extensions.DurableTask v3 actualiza el entorno de ejecución de destino de .NET Core 3.1 a .NET 6, lo que ofrece un rendimiento mejorado y una compatibilidad mejorada con las características y bibliotecas modernas de .NET. Esta actualización se alinea con futuras versiones de los conjuntos de extensiones de Azure Functions.

Migración de v2.x a v3.x

La migración de v2.x a v3.x no requiere cambios en el código; basta con actualizar las dependencias para empezar a usar las nuevas características.

Compatibilidad de degradación (v3.x a v2.x)

WebJobs.Extensions.DurableTask v3 usa una codificación de texto diferente para el SDK de Azure Storage (Base64) en comparación con v2 (UTF-8). Si necesita revertir de v3.x a v2.x, use las siguientes versiones mínimas para garantizar la compatibilidad con versiones anteriores:

  • In-process model:v2.13.5 o posterior.
  • Modelo de trabajo aislado:v1.1.5 o posterior (si se revierte de v1.2.x o superior).

Vuelva a una versión de paquete de extensiones anterior a la 4.22.0.

Compatibilidad y mantenimiento de v2.x

WebJobs.Extensions.DurableTask v2.x sigue recibiendo actualizaciones de seguridad y correcciones de errores, lo que garantiza que las aplicaciones existentes permanezcan seguras y estables. Sin embargo, todas las nuevas características y mejoras se agregan exclusivamente a v3.x. Por este motivo, debe actualizar a WebJobs.Extensions.DurableTask v3 en cuanto pueda aprovechar las funcionalidades más recientes y las mejoras en curso.

Características introducidas en v2.x

Las siguientes características están disponibles en Durable Functions 2.x y versiones posteriores, en todos los idiomas admitidos.

Nota:

Los detalles de la API de .NET en proceso de esta sección no se aplican al modelo de trabajador aislado. Para obtener orientación para trabajadores aislados, consulte la visión general del proceso aislado de Durable Functions.

Entidades duraderas

Durable Functions admite funciones entity para leer y actualizar pequeños fragmentos de estado, conocidos como entidades durables. Al igual que las funciones de orquestador, las funciones de entidad son funciones con un tipo de desencadenador especial, 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, consulte el artículo sobre entidades duraderas .

HTTP persistente

Durable Functions incluye una característica Durable HTTP que le permite:

  • Llame a las API HTTP directamente desde las funciones de orquestación (con algunas limitaciones documentadas).
  • Implemente el sondeo automático de estado HTTP 202 del lado cliente.
  • Utilice la compatibilidad integrada con Identidades administradas de Azure.

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

Migración de 1.x a 2.x

Importante

La versión 1.x del entorno de ejecución de Azure Functions alcanza el final del soporte técnico en September 2026. Si todavía está en v1.x, planee la migración pronto.

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

Actualización de la extensión Durable Functions

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

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

La compatibilidad de Python con Durable Functions requiere Durable Functions 2.x o posterior.

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

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

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

Para actualizar la versión del paquete de extensiones en el proyecto, abra host.json y actualice la sección para usar la extensionBundle 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 extensiones, vuelva a cargar la ventana ejecutando el comando Developer: Reload Window (Ctrl+R en Windows y Linux, Command+R en macOS).

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

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

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

Actualice su proyecto .NET para usar la versión más reciente de la extensión de vínculos de Durable Functions.

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

Actualización del código de Durable Functions

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 en el 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 2.x.

Esquema de host.json

Durable Functions 2.x usa un nuevo esquema de host.json. Entre los cambios principales de la versión 1.x se incluyen:

  • "storageProvider" (y la subsección de "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.

Consulte la documentación de referencia Durable Functions host.json para obtener más información.

Cambios en el nombre predeterminado del centro de tareas

En la versión 1.x, si no se especificó un nombre de centro de tareas en host.json, el valor predeterminado es "DurableFunctionsHub". En la versión 2.x, el nombre del centro de tareas predeterminado ahora se deriva del nombre de la aplicación de funciones. Por este motivo, si no ha especificado un nombre del centro de tareas al actualizar a la versión 2.x, el código funcionará con el nuevo centro de tareas y todas las orquestaciones en curso ya no tendrán 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 en Durable Functions

En la versión 1.x, los distintos objetos context compatibles con Durable Functions tienen clases base abstractas diseñadas para su uso en pruebas unitarias. Como parte de Durable Functions 2.x, estas clases base abstractas se reemplazan por 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

En el caso de que una clase base abstracta contenga métodos virtuales, estos métodos virtuales se han reemplazado por métodos de extensión definidos en DurableContextExtensions.

Cambios en function.json

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

Cambios en la generación de eventos

En Durable Functions 1.x, llamar a la API de raise event y especificar una instancia que no existía resultó en un fallo 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.