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.
El trabajo aislado de .NET le permite ejecutar Durable Functions en cualquier versión de .NET compatible independientemente del proceso de host de Azure Functions. Este modelo proporciona control total sobre la inserción de dependencias, el middleware y el control de versiones de .NET.
En este artículo, aprenderá lo siguiente:
- Ventajas del trabajador aislado en Durable Functions
- Introducción a los paquetes necesarios
- Diferencias clave de las APIs y espacios de nombres en proceso
- Generadores de origen y sintaxis basada en clases (versión preliminar) para orquestación de tipo fuerte
Ventajas
El trabajador aislado de .NET proporciona varias ventajas para las aplicaciones de Durable Functions.
- Control de versiones de .NET independiente: Ejecute la aplicación en .NET 8, .NET 9 o posterior sin esperar a que el host de Functions se actualice.
-
Inserción de dependencias completa: Use patrones de .NET
IServiceCollection/IServiceProviderestándar en las actividades. - Middleware personalizado: Agregue aspectos transversales, como el registro de logs, la autenticación o el manejo de errores a través de la canalización de middleware del trabajador de Functions.
-
Inyección de entrada directa: La entrada de orquestación se puede insertar directamente en la firma del método desencadenador:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input). - Llamadas fuertemente tipadas (versión preliminar): Con el paquete de generador de código, obtendrá invocaciones seguras en tiempo de compilación para actividades y sub-orquestaciones. Para obtener más información, consulte Generadores de origen y sintaxis basada en clases (versión preliminar).
Para obtener la lista completa de las ventajas de los trabajadores aislados, consulte Ventajas del modelo de trabajo aislado.
Empieza ahora
Para crear una aplicación de Durable Functions mediante el trabajador aislado de .NET:
Instale el paquete NuGet necesario:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />Se usa
TaskOrchestrationContextpara orquestadores yDurableTaskClientpara las operaciones de cliente. Consulte el tutorial de inicio rápido para ver un tutorial completo.
Diferencias clave con respecto al proceso en curso
Si va a migrar o comparar con el modelo en ejecución, estas son las principales diferencias:
| Area | En proceso | Trabajo aislado de .NET |
|---|---|---|
| Paquete NuGet | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
| Contexto del orquestador | IDurableOrchestrationContext |
TaskOrchestrationContext |
| Tipo de cliente | IDurableOrchestrationClient |
DurableTaskClient |
| Contexto de actividad | IDurableActivityContext |
TaskActivityContext |
| Namespace | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.DurableTask / Microsoft.Azure.Functions.Worker |
| Registrador resistente a repeticiones | context.CreateReplaySafeLogger(log) |
context.CreateReplaySafeLogger("Name") |
Para obtener una guía de migración completa que abarque la configuración del proyecto, las referencias de paquetes, las asignaciones de API, las diferencias de comportamiento y los problemas comunes, consulte Migración de un modelo de trabajo aislado a un proceso.
Generadores de origen y sintaxis basada en clases (versión preliminar)
El paquete de generador de código proporciona una alternativa a Durable Functions basadas en funciones. En lugar de los métodos estáticos con [Function] atributos, se escriben clases fuertemente tipadas que heredan del SDK de Durable.
Prerrequisitos
Agregue el paquete NuGet del generador de origen al proyecto:
<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />
El paquete proporciona dos funcionalidades:
-
Actividades y orquestaciones basadas en clases: clases fuertemente tipadas que heredan
TaskOrchestrator<TInput, TOutput>yTaskActivity<TInput, TOutput>. - Métodos de extensión fuertemente tipados—métodos seguros en tiempo de compilación para invocar suborquestaciones y actividades. Estos métodos de extensión también funcionan desde orquestaciones basadas en funciones.
Example
En el ejemplo siguiente se muestra una orquestación orientada a clases que invoca una actividad también orientada a clases.
using Microsoft.DurableTask;
[DurableTask]
public class MyOrchestration : TaskOrchestrator<string, string>
{
public override async Task<string> RunAsync(TaskOrchestrationContext context, string input)
{
return await context.CallActivityAsync<string>(nameof(MyActivity), input);
}
}
[DurableTask]
public class MyActivity : TaskActivity<string, string>
{
public override Task<string> RunAsync(TaskActivityContext context, string input)
{
return Task.FromResult($"Processed: {input}");
}
}
Tip
Para orquestaciones o actividades que no necesitan entrada o salida funcionales, use object? como argumento de tipo genérico (por ejemplo, TaskOrchestrator<object?, object?>). Este patrón le permite usar la inserción de dependencias (por ejemplo, ILogger<T>) en las actividades mientras sigue usando el modelo basado en clases.
Entidades duraderas
Las entidades duraderas se admiten en el trabajo aislado de .NET. Para obtener más información, consulte la guía del desarrollador.