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.
Durable Functions é uma extensão de Funções do Azure e Azure WebJobs que permite escrever funções com estado num ambiente serverless. A extensão faz a gestão do estado, dos pontos de verificação e dos reinícios para si. Se ainda não estiver familiarizado com Durable Functions, consulte a documentação visão geral.
Resumo da versão
| Versão | Status | Principais alterações |
|---|---|---|
| v3.x | Atual (recomendado) | Atualizei o Armazenamento do Azure SDK, melhorei a eficiência de custos, sem alterações de código para atualizar a partir da v2.x |
| v2.x | Mantido (apenas segurança e correções de bugs) | Entidades Duráveis, HTTP Durable |
| v1.x | Fim do apoio setembro de 2026 | Legacy |
Novidades na v3.x
O pacote Microsoft.Azure.WebJobs.Extensions.DurableTask v3 (referido como WebJobs.Extensions.DurableTask nas secções seguintes) é a versão recomendada atualmente. Atualizar a partir da v2.x não requer alterações de código — só precisa de atualizar as dependências dos seus pacotes. Esta atualização é considerada apenas uma mudança decisiva para clientes que executam aplicações C# Duráveis que utilizam o modelo em processo.
Observação
O pacote .NET de Durable Functions fora de processo, Microsoft.Azure.Functions.Worker.Extensions.DurableTask, faz referência a Microsoft.Azure.WebJobs.Extensions.DurableTask como seu assembly subjacente. Assim, esta atualização aplica-se também à Microsoft. Azure. Functions.Worker.Extensions.DurableTask, a partir da versão 1.2.x.
SDK de Armazenamento Azure Atualizado
Por defeito, as Durable Functions usam o Armazenamento do Azure como backend de armazenamento para guardar o estado da aplicação de forma duradoura. No WebJobs.Extensions.DurableTask v3, o backend Armazenamento do Azure foi atualizado para usar as versões mais recentes dos SDKs Armazenamento do Azure: Azure. Data.Tables, Azure. Storage.Blobs e Azure. Storage.Queues. Estes SDKs oferecem suporte melhorado para Identidade Gerida, melhor desempenho, tratamento de dados mais eficiente e segurança melhorada em comparação com os pacotes legados Microsoft.Azure.Storage.* usados na v2.x.
Melhoria da eficiência de custos (para o fornecedor do Armazenamento do Azure)
No sistema backend Armazenamento do Azure, o Gestor de Partições é responsável por distribuir partições/filas de controlo entre os colaboradores. O pacote WebJobs.Extensions.DurableTask v3 utiliza o Partition Manager V3 por defeito, que é um novo design que aproveita as Tabelas do Azure para gerir atribuições de partições em vez de locações do Azure Blob. Esse design pode reduzir significativamente os custos de armazenamento e, ao mesmo tempo, facilitar a depuração. Quando o Partition Manager V3 é utilizado, uma nova tabela, chamada Partitions, é criada na sua conta de armazenamento, permitindo-lhe verificar facilmente a informação da partição.
Remoção do suporte para o runtime do Funções do Azure v1
WebJobs.Extensions.DurableTask v3 já não suporta a versão 1.x do runtime Funções do Azure, cujo suporte está previsto terminar em setembro de 2026. Se tiver de usar o runtime das Funções v1, utilize, por favor, uma versão de extensão Durable Functions inferior a v2.11.0. Tenha em mente que, quando chegar o fim programado do suporte, o Durable Functions também deixará de suportar o runtime v1.
Atualização do destino de runtime .NET
O WebJobs.Extensions.DurableTask v3 atualiza o tempo de execução alvo do .NET Core 3.1 para o .NET 6, oferecendo melhor desempenho e compatibilidade com funcionalidades e bibliotecas .NET modernas. Esta atualização está alinhada com futuras versões dos pacotes de extensão Funções do Azure.
Migrar da v2.x para a v3.x
A migração da v2.x para a v3.x não requer alterações de código — basta atualizar as suas dependências para começar a usar as novas funcionalidades.
- Modelo em processo: Atualizar para Microsoft.Azure. WebJobs.Extensions.DurableTask versão 3.0.0 ou posterior.
- Modelo de trabalhador isolado: Atualizar para Microsoft.Azure. Functions.Worker.Extensions.DurableTask versão 1.2.0 ou posterior.
Atualize para a versão 4.22.0 ou posterior do pacote de extensões Funções do Azure.
Compatibilidade de downgrade (v3.x para v2.x)
WebJobs.Extensions.DurableTask v3 utiliza uma codificação de texto diferente para o Armazenamento do Azure SDK (Base64) em comparação com a v2 (UTF-8). Se precisares de reverter da v3.x para a v2.x, usa as seguintes versões mínimas para garantir compatibilidade retroativa:
Reverter para uma versão do pacote de extensões anterior à 4.22.0.
Suporte e manutenção da v2.x
WebJobs.Extensions.DurableTask v2.x continua a receber atualizações de segurança e correções de bugs, 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 o mais rápido possível para aproveitar os recursos mais recentes e melhorias contínuas.
Funcionalidades introduzidas na v2.x
As seguintes funcionalidades estão disponíveis no Durable Functions 2.x e posteriores, em todas as linguagens suportadas.
Observação
Os detalhes da API .NET em processo nesta secção não se aplicam ao modelo de trabalhador isolado. Para orientações sobre trabalhadores isolados, consulte a Durable Functions visão geral do processo isolado.
Entidades duráveis
Durable Functions suporta funções entity para ler e atualizar pequenos pedaços de estado, conhecidos como entidades duradouras. Tal como as funções orquestradoras, as funções entidade são funções com um tipo especial de gatilho, gatilho da 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, consulte o artigo sobre entidades duradouras .
HTTP durável
Durable Functions inclui uma funcionalidade Durable HTTP que permite:
- Chame APIs HTTP diretamente de funções de orquestração (com algumas limitações documentadas).
- Implemente a sondagem automática de status HTTP 202 do lado do cliente.
- Utilize suporte integrado para Identidades Geridas do Azure.
Para saber mais, consulte o artigo sobre funcionalidades HTTP .
Migrar de 1.x para 2.x
Importante
A versão 1.x do runtime da Funções do Azure chega ao fim do suporte em setembro de 2026. Se ainda estiveres na v1.x, planeia a tua migração em breve.
Esta secção descreve como migrar a sua versão 1.x Durable Functions para a versão 2.x para tirar partido das novas funcionalidades.
Atualizar a extensão Durable Functions
Instale a versão 2.x mais recente da extensão Durable Functions bindings no seu projeto.
Durable Functions 2.x está disponível a partir da versão 2.x do pacote de extensão Funções do Azure.
O suporte a Python em Durable Functions requer Durable Functions 2.x ou superior.
Para atualizar a versão do pacote de extensão no seu projeto, abra host.json e atualize a extensionBundle secçã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)"
}
}
Durable Functions 2.x está disponível a partir da versão 2.x do pacote de extensão Funções do Azure.
Para atualizar a versão do pacote de extensão no seu projeto, abra host.json e atualize a extensionBundle secçã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 Visual Studio Code não estiver a mostrar os modelos corretos depois de alterar a versão do pacote de extensões, recarregue a janela executando o comando Developer: Reload Window (Ctrl+R no Windows e Linux, Command+R no macOS).
Durable Functions 2.x está disponível a partir da versão 2.x do pacote de extensão Funções do Azure.
Para atualizar a versão do pacote de extensão no seu projeto, abra host.json e atualize a extensionBundle secçã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)"
}
}
Atualize o seu projeto .NET para usar a versão mais recente da extensão Durable Functions bindings.
Consulte Register Funções do Azure binding extensions para mais informações.
Atualize o seu código Durable Functions
Durable Functions 2.x introduz várias mudanças decisivas. As aplicações Durable Functions 1.x não são compatíveis com 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.
Host.json esquema
Durable Functions 2.x utiliza um novo esquema host.json. As principais alterações do 1.x incluem:
-
"storageProvider"(e a subsecção"azureStorage") para configuração específica de armazenamento. -
"tracing"para configuração de rastreamento e registo. -
"notifications"(e a subsecção"eventGrid") para configurar notificações do Eventos Grid.
Consulte a documentação de referência Durable Functions host.json para mais detalhes.
Alterações no nome do hub de tarefas padrão
Na versão 1.x, se um nome de hub de tarefas não foi especificado na host.json, o padrão foi "DurableFunctionsHub". Na versão 2.x, o nome do hub de tarefas padrão agora é derivado do nome do aplicativo de função. Por isso, se você não tiver especificado um nome de hub de tarefas ao atualizar para 2.x, seu código estará operando com o novo hub de tarefas e todas as orquestrações em voo não terão mais um aplicativo processando-as. Para contornar isto, pode definir explicitamente o nome do seu hub de tarefas para o padrão v1.x de "DurableFunctionsHub", ou pode seguir as nossas orientações de implementação sem tempo de inatividade para detalhes sobre como lidar com alterações repentinas nas orquestrações em voo.
Alterações na interface pública em Durable Functions
Na versão 1.x, os vários objetos context suportados por Durable Functions têm classes base abstratas destinadas a serem usadas em testes unitários. Como parte do Durable Functions 2.x, estas classes base abstratas são substituídas por interfaces.
O quadro seguinte 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, estes métodos virtuais foram substituídos por métodos de extensão definidos em DurableContextExtensions.
function.json alterações
Na versão 1.x do Durable Functions, a ligação ao cliente de orquestração utiliza um type de orchestrationClient. A versão 2.x usa durableClient em vez disso.
Iniciar mudanças de eventos
Na Durable Functions 1.x, chamar a API raise event e especificar uma instância que não existia resultava numa falha silenciosa. A partir de 2.x, elevar um evento a uma orquestração inexistente resulta em uma exceção.