Descrição geral das versões do Durable Functions
Durable Functions é uma extensão de Funções do Azure e WebJobs do Azure que lhe permite escrever funções com estado num ambiente sem servidor. A extensão gere o estado, os pontos de verificação e os reinícios por si. Se ainda não estiver familiarizado com Durable Functions, consulte a documentação de descrição geral.
Novas funcionalidades na versão 2.x
Esta secção descreve as funcionalidades de Durable Functions que são adicionadas na versão 2.x.
Nota
Esta secção não se aplica a Durable Functions na função de trabalho isolada do dotnet. Para tal, veja durable functions isolated process overview (Descrição geral do processo isolado das 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 ler e atualizar pequenos pedaços de estado, conhecidos como entidades duráveis. Tal como as funções do orquestrador, as funções de entidade são funções com um tipo de acionador especial, acionador de entidade. Ao contrário das funções do orquestrador, as funções de entidade não têm restrições de código específicas. As funções de entidade também gerem explicitamente o estado em vez de representarem implicitamente o estado através do fluxo de controlo.
Para saber mais, veja o artigo durable entities (Entidades duráveis ).
Durable HTTP
No Durable Functions 2.x, introduzimos uma nova funcionalidade Durable HTTP que lhe permite:
- Chame as APIs HTTP diretamente das funções de orquestração (com algumas limitações documentadas).
- Implemente a consulta de estado HTTP 202 automática do lado do cliente.
- Suporte incorporado para Identidades Geridas do Azure.
Para saber mais, consulte o artigo funcionalidades HTTP .
Migrar de 1,x para 2.x
Esta secção descreve como migrar a versão 1.x existente Durable Functions para a versão 2.x para tirar partido das novas funcionalidades.
Atualizar a extensão
Instale a versão 2.x mais recente da extensão de enlaces Durable Functions no projeto.
JavaScript, Python e PowerShell
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 do Python no Durable Functions requer Durable Functions 2.x ou superior.
Para atualizar a versão do pacote de extensões no seu projeto, abra host.json e atualize a extensionBundle
secção para utilizar a versão 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Nota
Se o Visual Studio Code não apresentar os modelos corretos depois de alterar a versão do pacote de extensões, recarregue a janela ao executar o comando Programador: Recarregar Janela (Ctrl+R no Windows e Linux, Comando+R no macOS).
Java
Durable Functions 2.x está disponível a partir da versão 4.x do pacote de extensão Funções do Azure. Tem de utilizar o runtime Funções do Azure 4.0 para executar funções Java.
Para atualizar a versão do pacote de extensões no seu projeto, abra host.json e atualize a extensionBundle
secção para utilizar a versão 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
.NET
Atualize o projeto .NET para utilizar a versão mais recente da extensão de enlaces Durable Functions.
Consulte Registar extensões de enlace Funções do Azure para obter mais informações.
Atualizar o código
Durable Functions 2.x introduz várias alterações interruptivas. Durable Functions aplicações 1.x não são compatíveis com Durable Functions 2.x sem alterações de código. Esta secção lista algumas das alterações que tem de fazer ao atualizar as funções da versão 1.x para 2.x.
Esquema host.json
Durable Functions 2.x utiliza um novo esquema host.json. As principais alterações de 1.x incluem:
-
"storageProvider"
(e a"azureStorage"
subsecção) para a configuração específica do armazenamento. -
"tracing"
para configuração de rastreio e registo. -
"notifications"
(e a"eventGrid"
subsecção) para a configuração de notificação do Event Grid.
Veja a documentação de referência Durable Functions host.json para obter detalhes.
Alterações de nome do hub de tarefas predefinidas
Na versão 1.x, se o nome de um hub de tarefas não tiver sido especificado em host.json, foi predefinido "DurableFunctionsHub". Na versão 2.x, o nome do hub de tarefas predefinido é agora derivado do nome da aplicação de funções. Por este motivo, se não especificou o nome de um hub de tarefas ao atualizar para 2.x, o código irá funcionar com o novo hub de tarefas e todas as orquestrações a bordo deixarão de ter uma aplicação a processá-las. Para contornar esta situação, pode definir explicitamente o nome do seu hub de tarefas para a predefinição v1.x de "DurableFunctionsHub", ou pode seguir a nossa documentação de orientação de implementação de tempo de inatividade zero para obter detalhes sobre como lidar com alterações interruptivas para orquestrações a bordo.
Alterações da interface pública (apenas.NET)
Na versão 1.x, os vários objetos de contexto suportados pelo Durable Functions têm classes base abstratas destinadas a utilização em testes de unidades. Como parte do Durable Functions 2.x, estas classes base abstratas são substituídas por interfaces.
A tabela 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 de uma classe base abstrata conter métodos virtuais, estes métodos virtuais foram substituídos por métodos de extensão definidos em DurableContextExtensions
.
alterações function.json
No Durable Functions 1.x, o enlace de cliente de orquestração utiliza um type
de orchestrationClient
. Em vez disso, a versão 2.x utiliza durableClient
.
Aumentar alterações de eventos
No Durable Functions 1.x, chamar a API de evento de aumento e especificar uma instância que não existia resultou numa falha silenciosa. A partir da versão 2.x, elevar um evento para uma orquestração inexistente resulta numa exceção.