Compartir a través de


Introducción a las versiones 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 en su nombre. Si aún no está familiarizado con Durable Functions, consulte la documentación de información general.

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

En esta sección se presenta el nuevo paquete Microsoft.Azure.WebJobs.Extensions.DurableTask v3 (denominado WebJobs.Extensions.DurableTask en secciones posteriores) y se proporcionan detalles sobre sus actualizaciones y cambios. 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 paquete de .NET fuera de proceso de Durable Functions, 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.

Nuevo SDK de Azure Storage

De forma predeterminada, Durable Functions usa Azure Storage como back-end de almacenamiento para guardar permanentemente 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. Los nuevos SDK de Azure Storage están más protegidos y ofrecen compatibilidad mejorada con identidad administrada. También ofrecen un mejor rendimiento, un control de datos más eficaz y otras características de almacenamiento más recientes.

Mejora de la rentabilidad del back-end de Azure Storage

En el backend de Azure Storage, el Administrador de particiones es responsable de distribuir particiones o colas de control entre los trabajadores. El paquete WebJobs.Extensions.DurableTask v3 usa Partition manager V3 de forma predeterminada, un nuevo diseño que utiliza las Tablas de Azure 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 Functions v1

WebJobs.Extensions.DurableTask v3 ya no admite la versión 1.x del entorno de ejecución de Azure Functions, que está programado para finalizar en septiembre de 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 fin de soporte programado, Durable Functions también quitará su compatibilidad con runtime v1.

Actualización de .NET Framework

WebJobs.Extensions.DurableTask v3 actualiza .NET Framework 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 WebJobs.Extensions.DurableTask v2.x a v3.x

La migración de WebJobs.Extensions.DurableTask v2.x a v3.x está diseñada para ser sencilla sin cambios de código necesarios, ya que los cambios están en segundo plano. Solo tiene que actualizar las dependencias para empezar a aprovechar las nuevas características y mejoras en v3.x.

Nota:

WebJobs.Extensions.DurableTask v3 usa la versión más reciente del SDK de Azure Storage, que tiene una codificación de texto diferente (Base64) en comparación con la que se usa en v2 (UTF-8). Si necesita cambiar de v3.x a v2.x, para garantizar la compatibilidad con versiones anteriores, use al menos v2.13.5. Los usuarios fuera de proceso de .NET con Microsoft.Azure.Functions.Worker.Extensions.DurableTask deberán retroceder a v1.1.5 o a una versión superior si se revierte desde v1.2.x o una versión superior.

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.

Nuevas características de Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x

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

Nota:

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

Entidades duraderas

En Durable Functions 2.x, se introdujo 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, consulte el artículo sobre entidades duraderas .

HTTP persistente

En Durable Functions 2.x, presentamos una nueva característica HTTP durable 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.
  • 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

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 nuevas características.

Actualización de la extensión

Instale la versión 2.x más reciente de la extensión de enlaces de 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 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)"
    }
}

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).

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 entorno de ejecución de Azure Functions 4.0 para ejecutar funciones de Java.

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)"
    }
}

.RED

Actualice el proyecto de .NET para usar la versión más reciente de la extensión de enlaces de Durable Functions.

Consulte Registro de extensiones de enlace de Azure Functions para más información.

Actualización del código

En Durable Functions 2.x se han presentado varios cambios importantes. Las aplicaciones 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 2.x.

Esquema de host.json

Durable Functions 2.x usa un nuevo esquema host.json. Entre los cambios principales de la versión 1.x se 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.

Consulte la documentación de referencia de 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 (solo .NET)

En la versión 1.x, los distintos objetos de contexto admitidos por 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 del 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 generar evento 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.