Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O trabalhador isolado .NET permite executar Durable Functions em qualquer versão .NET suportada, independentemente do processo host do Azure Functions. Este modelo dá-lhe controlo total sobre a injeção de dependências, middleware e versionamento do .NET.
Neste artigo, você aprende sobre:
- Benefícios dos trabalhadores isolados nas Funções Duráveis
- Começar com os pacotes necessários
- Principais diferenças em relação ao in-process APIs e namespaces
- Geradores de código e sintaxe baseada em classes (versão prévia) para orquestrações fortemente tipadas
Benefits
O trabalhador isolado do .NET oferece várias vantagens para as aplicações Durable Functions.
- Versionamento independente do .NET: Execute a sua aplicação em .NET 8, .NET 9 ou versões posteriores sem esperar que o anfitrião das Funções atualize.
-
Injeção total de dependências: Utilize padrões .NET
IServiceCollection/IServiceProvidernas suas atividades. - Middleware personalizado: Adicione preocupações de corte transversal como registo, autenticação ou tratamento de erros através do pipeline de middleware worker Functions.
-
Injeção direta de entrada: A entrada de orquestração pode ser injetada diretamente na assinatura do método de gatilho:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input). - Chamadas fortemente tipadas (pré-visualização): Com o pacote gerador de código-fonte, obtém-se invocações seguras em tempo de compilação para atividades e suborquestrações. Para mais informações, consulte Geradores de Fonte e sintaxe baseada em classes (pré-visualização).
Para a lista completa dos benefícios do trabalhador isolado, veja Benefícios do modelo do trabalhador isolado.
Introdução
Para criar uma aplicação Durable Functions usando o trabalhador isolado .NET:
Instale o pacote NuGet necessário:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />Uso
TaskOrchestrationContextpara orquestradores eDurableTaskClientpara operações com clientes. Veja o tutorial de início rápido para uma explicação completa.
Principais diferenças em relação ao processo em curso
Se está a migrar de ou a comparar com o modelo em processo, aqui estão as principais diferenças:
| Área | Em andamento | .NET trabalhador isolado |
|---|---|---|
| Pacote NuGet | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
| Contexto do orquestrador | IDurableOrchestrationContext |
TaskOrchestrationContext |
| Tipo de cliente | IDurableOrchestrationClient |
DurableTaskClient |
| Contexto da atividade | IDurableActivityContext |
TaskActivityContext |
| Espaço de nomes | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.DurableTask / Microsoft.Azure.Functions.Worker |
| Registo seguro por replay | context.CreateReplaySafeLogger(log) |
context.CreateReplaySafeLogger("Name") |
Para um guia de migração abrangente que aborda a configuração do projeto, referências de pacotes, mapeamentos de API, diferenças comportamentais e questões comuns, veja Migrar do modelo em processo para o modelo de trabalhador isolado.
Geradores de fonte e sintaxe baseada em classes (pré-visualização)
O pacote gerador de fonte oferece uma alternativa às Funções Duráveis baseadas em funções. Em vez de métodos estáticos com atributos [Function], escrevem-se classes fortemente tipadas que herdam do SDK Durável.
Pré-requisitos
Adicione o pacote NuGet do gerador de origem ao seu projeto:
<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />
O pacote oferece duas capacidades:
-
Atividades e orquestrações baseadas em classes — classes fortemente tipadas que herdam
TaskOrchestrator<TInput, TOutput>eTaskActivity<TInput, TOutput>. - Métodos de extensão fortemente tipados — métodos seguros em tempo de compilação para invocar suborquestrações e atividades. Estes métodos de extensão também funcionam a partir de orquestrações baseadas em funções.
Example
O exemplo seguinte mostra uma orquestração baseada em classes que chama uma atividade baseada em classes:
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 orquestrações ou atividades que não necessitem de entrada ou saída funcional, use object? como argumento genérico do tipo (por exemplo, TaskOrchestrator<object?, object?>). Este padrão permite usar injeção de dependências (por exemplo, ILogger<T>) em atividades, mantendo o modelo baseado em classes.
Entidades duráveis
Entidades duráveis são suportadas no trabalhador isolado .NET. Para mais informações, consulte o guia do programador.