Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Durable Functions é uma extensão do Azure Functions e do Azure WebJobs que permite que você escreva funções com estado em um ambiente sem servidor. A extensão gerencia estado, pontos de verificação e reinicializações para você. Se você ainda não estiver familiarizado com o Durable Functions, consulte a documentação de visão geral.
Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x
Esta seção apresenta o novo pacote Microsoft.Azure.WebJobs.Extensions.DurableTask v3 (conhecido como WebJobs.Extensions.DurableTask nas seções subsequentes) e fornece detalhes sobre suas atualizações e alterações. Essa atualização é considerada apenas uma alteração significativa para clientes que executam aplicativos Duráveis em C# que usam o modelo em processo.
Observação
O pacote fora de processo do .NET do Durable Functions, Microsoft.Azure.Functions.Worker.Extensions.DurableTask, faz referência a Microsoft.Azure.WebJobs.Extensions.DurableTask como seu assembly subjacente. Portanto, essa atualização também se aplica ao Microsoft.Azure.Functions.Worker.Extensions.DurableTask, a partir da versão 1.2.x.
Novo SDK de Armazenamento do Azure
Por padrão, as Durable Functions usam o Armazenamento do Azure como um back-end de armazenamento para salvar de maneira durável o estado do aplicativo. Em WebJobs.Extensions.DurableTask v3, o back-end do Armazenamento do Azure foi atualizado para usar as versões mais recentes dos SDKs de Armazenamento do Azure: Azure.Data.Tables, Azure.Storage.Blobs e Azure.Storage.Queues. Os novos SDKs de Armazenamento do Azure são mais seguros e oferecem suporte aprimorado para Identidade Gerenciada. Eles também oferecem melhor desempenho, tratamento de dados mais eficiente e outros recursos de armazenamento mais recentes.
Melhor eficiência de custo para o back-end do Armazenamento do Azure
No backend do Armazenamento do Azure, o Gerenciador de Partições é responsável por distribuir partições/filas de controle entre os trabalhadores. O pacote WebJobs.Extensions.DurableTask v3 usa o Gerenciador de Partições V3 por padrão, que é um novo design que aproveita as Tabelas do Azure para gerenciar atribuições de partição em vez de concessões de Blob do Azure. Esse design pode reduzir significativamente os custos de armazenamento, facilitando a depuração. Quando o Partition Manager V3 é usado, uma nova tabela, nomeada Partitions, é criada em sua conta de armazenamento, permitindo que você verifique facilmente as informações de partição.
Suporte removido para o runtime do Functions v1
WebJobs.Extensions.DurableTask v3 não dá mais suporte à versão 1.x do runtime do Azure Functions, suporte para o qual está programado para terminar em setembro de 2026. Se você precisar usar o runtime do Functions v1, use uma versão de extensão durable functions inferior à v2.11.0. Tenha em mente que, quando o fim agendado do suporte chegar, o Durable Functions deixará de oferecer suporte ao runtime v1 também.
Atualização do .NET Framework
WebJobs.Extensions.DurableTask v3 atualiza o .NET Framework do .NET Core 3.1 para o .NET 6, oferecendo melhor desempenho e compatibilidade aprimorada com recursos e bibliotecas modernas do .NET. Essa atualização está alinhada com versões futuras dos pacotes de extensão do Azure Functions.
Migração de WebJobs.Extensions.DurableTask v2.x para v3.x
A migração de WebJobs.Extensions.DurableTask v2.x para v3.x foi projetada para ser simples sem nenhuma alteração de código necessária, pois as alterações estão em segundo plano. Basta atualizar suas dependências para começar a aproveitar os novos recursos e melhorias na v3.x.
- Para usuários em processo do .NET: atualize para Microsoft.Azure.WebJobs.Extensions.DurableTask versão 3.0.0 ou posterior.
- Para usuários isolados do .NET: atualize para Microsoft.Azure.Functions.Worker.Extensions.DurableTask versão 1.2.0 ou posterior.
- Para usuários de outros idiomas com pacotes de extensão: o suporte para Durable Functions v3 em Pacotes de Extensão estará disponível a partir da versão 4.22.0.
Observação
WebJobs.Extensions.DurableTask v3 usa a versão mais recente do SDK de Armazenamento do Azure, que tem uma codificação de texto diferente (Base64) em comparação com a usada na v2 (UTF-8). Se você precisar fazer downgrade de v3.x para v2.x, para garantir a compatibilidade com versões anteriores, use pelo menos v2.13.5. Para usuários fora de processo do .NET com Microsoft.Azure.Functions.Worker.Extensions.DurableTask, faça downgrade para v1.1.5 ou superior se reverter da v1.2.x ou superior.
Suporte e manutenção da v2.x
WebJobs.Extensions.DurableTask v2.x continua recebendo atualizações de segurança e correções de bug, garantindo que seus aplicativos existentes permaneçam seguros e estáveis. No entanto, todos os novos recursos e aprimoramentos são adicionados exclusivamente à v3.x. Por isso, você deve atualizar para WebJobs.Extensions.DurableTask v3 assim que puder aproveitar os recursos mais recentes e melhorias contínuas.
Novos recursos em Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x
Esta seção descreve os recursos das Durable Functions que são adicionados na versão 2.x.
Observação
Esta seção não se aplica ao Durable Functions no trabalho isolado do dotnet. Para isso, confira a visão geral sobre o processo isolado de funções duráveis.
Entidades duráveis
No Durable Functions 2.x, introduzimos um novo conceito de funções de entidade .
As funções de entidade definem operações para leitura e atualização de pequenas partes de estado, conhecidas como entidades duráveis. Como as funções de orquestrador, as funções de entidade são funções com um tipo de gatilho especial, o gatilho de entidade. Ao contrário das funções de orquestrador, as funções de entidade não têm restrições de código específicas. As funções de entidade também gerenciam o estado explicitamente, em vez de representar implicitamente o estado por meio do fluxo de controle.
Para saber mais, confira o artigo de entidades duráveis .
HTTP Durável
No Durable Functions 2.x, introduzimos um novo recurso HTTP durável que permite:
- Chame APIs HTTP diretamente de funções de orquestração (com algumas limitações documentadas).
- Implementar a sondagem automática de status HTTP 202 do lado do cliente.
- Suporte interno para identidades gerenciadas do Azure.
Para saber mais, confira o artigo sobre recursos HTTP .
Migrar de 1.x para 2.x
Esta seção descreve como migrar suas funções duráveis da versão 1.x existentes para a versão 2.x para aproveitar os novos recursos.
Atualizar a extensão
Instale a versão 2.x mais recente da extensão de associações durable functions em seu projeto.
JavaScript, Python e PowerShell
Durable Functions 2.x está disponível a partir da versão 2.x do pacote de extensão do Azure Functions.
O suporte do Python em Durable Functions requer Durable Functions 2.x ou superior.
Para atualizar a versão do pacote de extensão em seu projeto, abra host.json e atualize a extensionBundle seção para usar a versão 4.x ([4.*, 5.0.0)).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Observação
Se o Visual Studio Code não estiver exibindo os modelos corretos depois de alterar a versão do pacote de extensão, recarregue a janela executando o comando Desenvolvedor: Recarregar Janela (Ctrl+R no Windows e Linux, Command+R no macOS).
Java
Durable Functions 2.x está disponível a partir da versão 4.x do pacote de extensão do Azure Functions. Você deve usar o runtime do Azure Functions 4.0 para executar funções Java.
Para atualizar a versão do pacote de extensão em seu projeto, abra host.json e atualize a extensionBundle seção para usar a versão 4.x ([4.*, 5.0.0)).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
.REDE
Atualize seu projeto .NET para usar a versão mais recente da extensão de associações do Durable Functions.
Consulte Registrar extensões de associação do Azure Functions para obter mais informações.
Atualizar o código
O Durable Functions 2.x introduz várias mudanças impactantes. Os aplicativos Durable Functions 1.x não são compatíveis com o Durable Functions 2.x sem alterações de código. Esta seção lista algumas das alterações que você deve fazer ao atualizar suas funções da versão 1.x para 2.x.
esquema Host.json
O Durable Functions 2.x usa um novo esquema de host.json. As principais alterações de 1.x incluem:
-
"storageProvider"(e a subseção"azureStorage") para configuração específica de armazenamento. -
"tracing"para configuração de registro em log e rastreamento. -
"notifications"(e a subseção"eventGrid") para configuração de notificação da Grade de Eventos.
Consulte a documentação de referência do durable functions host.json para obter detalhes.
Alterações de nome do hub de tarefas padrão
Na versão 1.x, se um nome de hub de tarefas não tiver sido especificado no host.json, ele será padronizado como "DurableFunctionsHub". Na versão 2.x, o nome do hub de tarefas padrão agora é derivado do nome do aplicativo de funções. Por isso, se você não especificou um nome de hub de tarefas ao atualizar para 2.x, seu código estará operando com um novo hub de tarefas, e todas as orquestrações em andamento não terão mais um aplicativo processando-as. Para contornar isso, você pode definir explicitamente o nome do hub de tarefas para o padrão v1.x de "DurableFunctionsHub", ou pode seguir nossas diretrizes de implantação sem nenhum tempo de inatividade para obter detalhes sobre como lidar com alterações interruptivas para orquestrações em andamento.
Alterações na interface pública (somente .NET)
Na versão 1.x, os vários objetos de contexto compatíveis com o Durable Functions têm classes base abstratas destinadas ao uso no teste de unidade. Como parte do Durable Functions 2.x, essas classes base abstratas são substituídas por interfaces.
A tabela a seguir representa as principais alterações:
| 1.x | 2.x |
|---|---|
DurableOrchestrationClientBase |
IDurableOrchestrationClient ou IDurableClient |
DurableOrchestrationContext ou DurableOrchestrationContextBase |
IDurableOrchestrationContext |
DurableActivityContext ou DurableActivityContextBase |
IDurableActivityContext |
OrchestrationClientAttribute |
DurableClientAttribute |
No caso em que uma classe base abstrata continha métodos virtuais, esses métodos virtuais foram substituídos por métodos de extensão definidos em DurableContextExtensions.
alterações do function.json
No Durable Functions 1.x, a associação de cliente de orquestração usa um type de orchestrationClient. Em vez disso, a versão 2.x usa durableClient .
Acionar alterações de evento
No Durable Functions versão 1.x, chamar a API de gerar evento e especificar uma instância que não existia resultou em uma falha silenciosa. A partir da versão 2.x, acionar um evento para uma orquestração inexistente resulta em uma exceção.