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 do Azure Functions que adiciona capacidades de orquestração com estado à tua aplicação de funções. Uma aplicação Durable Functions é composta por diferentes funções do Azure, cada uma desempenhando um papel específico: orquestrador, atividade, entidade ou cliente. Estas funções correspondem a tipos especializados de gatilho e associação que a extensão Durable Functions fornece.
Os SDKs de Tarefas Duráveis permitem-lhe construir aplicações com estado e tolerantes a falhas em qualquer plataforma de computação. A tua aplicação define orquestradores, atividades e entidades como classes ou funções que registas com um trabalhador. Uma API de cliente separada permite-lhe iniciar e gerir instâncias de orquestração.
A tabela seguinte resume os componentes principais da programação e os seus papéis:
| Componente | Função | Definido por |
|---|---|---|
| Orquestrador | Coordena a lógica do fluxo de trabalho | Disparador de orquestração |
| Activity | Executa uma única unidade de trabalho | Disparador de atividade |
| Entidade | Gere uma pequena parte do estado | Disparador de entidades |
| Cliente | Inicia e gere orquestrações e entidades | Ligação duradoura do cliente |
| Componente | Função | Definido por |
|---|---|---|
| Orquestrador | Coordena a lógica do fluxo de trabalho | Uma classe ou função registada com o trabalhador |
| Activity | Executa uma única unidade de trabalho | Uma classe ou função registada com o trabalhador |
| Entidade | Gere uma pequena parte do estado | Uma classe registada com o trabalhador |
| Cliente | Inicia e gere orquestrações e entidades |
DurableTaskClient API (Interface de Programação de Aplicações) |
Orquestradores
Os orquestradores definem o fluxo de trabalho: que ações tomar, em que ordem e como lidar com os resultados. Escreve a lógica do orquestrador como código comum usando construções padrão de fluxo de controlo, como ciclos, condicionais e blocos try/catch.
Um orquestrador pode agendar vários tipos de tarefas:
- Atividades para execução de trabalho
- Suborquestrações para compor fluxos de trabalho mais pequenos
- Temporizadores duráveis para atrasos e tempos de espera
- Eventos externos para aguardar sinais vindos de fora da orquestração
Os orquestradores também podem interagir com as entidades.
Nas Durable Functions, define um orquestrador usando a vinculação de gatilho de orquestração orchestration trigger binding. O gatilho fornece um objeto de contexto que usa para agendar tarefas e receber resultados.
Nos SDKs de Tarefa Durável, defines um orquestrador implementando uma classe ou função e registando-a com o trabalhador de Tarefa Durável. O orquestrador recebe um objeto de contexto que usas para agendar tarefas e receber resultados.
Importante
O código do Orchestrator tem de ser determinístico. O runtime da Tarefa Durable utiliza event sourcing e replay para reconstruir o estado do orquestrador, pelo que código não determinístico pode causar falhas ou deadlocks. Para orientações detalhadas, veja restrições de código do Orchestrator.
Para uma visão geral completa do comportamento do orquestrador, incluindo reprodução, identidade da instância e tratamento de erros, veja Orquestrações Duráveis.
Activities
As atividades são a unidade básica de trabalho numa orquestração duradoura. Cada atividade representa tipicamente uma única tarefa, como chamar uma API web, escrever numa base de dados ou calcular um resultado. Os orquestradores chamam atividades para realizarem seu trabalho real.
As atividades diferem dos orquestradores em aspetos fundamentais:
- Sem restrições de código. Os orquestradores devem ser determinísticos, mas as atividades podem executar qualquer código, incluindo operações não determinísticas ou de longa duração.
- Pelo menos uma execução. O tempo de execução garante que cada atividade seja executada pelo menos uma vez durante uma orquestração. Se ocorrer uma falha após a conclusão da atividade, mas antes do resultado ser registado, o tempo de execução pode executá-la novamente.
- Responsabilidade única. Cada atividade recebe uma entrada e devolve uma saída. Para passar múltiplos valores, use um tipo ou coleção complexa.
Defines uma função de atividade usando a ligação de ativação do gatilho. O gatilho fornece a entrada que o orquestrador passou ao agendar a atividade.
Defines uma atividade implementando uma classe ou função e registando-a junto do trabalhador da Tarefa Duradoura. A atividade recebe a entrada que o orquestrador passou ao agendá-la.
Observação
Como as atividades garantem execução pelo menos uma vez, torne a sua lógica de atividade idempotente sempre que possível. Por exemplo, utilize "upserts" em vez de "inserts", ou verifique os resultados existentes antes de criar novos recursos.
As atividades podem ser executadas em série, em paralelo ou numa combinação de ambos.
Entities
As entidades gerem pequenas e duráveis partes do Estado. Cada entidade tem uma identidade única e um conjunto de operações nomeadas que podem ler ou atualizar o seu estado interno. As entidades diferem dos orquestradores por gerirem o estado explicitamente através de operações, em vez de implicitamente através do fluxo de controlo. Também diferem dos orquestradores por não terem as mesmas restrições de código — operações de entidade podem executar qualquer código, incluindo operações não determinísticas ou de longa duração.
Usos comuns para entidades incluem:
- Agregação de dados de múltiplas fontes
- Implementação de bloqueios distribuídos ou semáforos
- Modelar objetos com estado como carrinhos de compras ou sessões de jogo
As entidades executam operações em série: apenas uma operação é executada de cada vez para uma dada instância de entidade. Esta execução serial evita conflitos de concorrência sem exigir bloqueio explícito.
Define uma função de entidade usando a ligação de gatilho de entidade.
Observação
As funções de entidade são suportadas em .NET, JavaScript/TypeScript, Python e Java, mas não no PowerShell.
Defines uma entidade implementando uma classe e registando-a junto do trabalhador da Tarefa Duradoura.
Observação
O suporte a entidades está disponível nos SDKs .NET, JavaScript/TypeScript e Python. O SDK Java atualmente não suporta entidades.
Para um guia completo sobre a definição, chamada e gestão de entidades, consulte Entidades Duradouras.
Cliente
O componente cliente é a forma como interages com orquestrações e entidades externas à orquestração. As operações comuns dos clientes incluem:
- Agendar novas instâncias de orquestração
- Consultar o estado das orquestrações em execução ou concluídas
- Acionar eventos para orquestrações em espera
- Suspender e retomar instâncias de orquestração
- Encerramento de instâncias de orquestração
- Operações da entidade de sinalização e leitura do estado da entidade
Qualquer função que não seja orquestradora pode atuar como função cliente. O que o torna cliente é o uso da vinculação de saída cliente duradoura. Por exemplo, pode iniciar uma orquestração a partir de uma função ativada por HTTP, uma função ativada por fila ou uma função ativada por temporizador.
A ligação duradoura ao cliente também fornece APIs para interagir com entidades, incluindo operações de sinalização e leitura do estado da entidade. Para mais informações, consulte a vinculação do cliente da entidade.
Nos SDKs de Tarefas Duradouras, interages com orquestrações e entidades através da classe DurableTaskClient. Cria uma instância cliente no código da sua aplicação e chama os seus métodos para iniciar, consultar ou gerir instâncias de orquestração e entidades. O cliente pode ser usado a partir de qualquer parte da sua aplicação — um endpoint HTTP, um serviço em segundo plano, uma aplicação de consola ou qualquer outro código.
Para informações detalhadas sobre todas as operações de gestão de instâncias, incluindo exemplos de código para cada linguagem, consulte Gerir instâncias de orquestração.
Passos seguintes
Comece por criar a sua primeira aplicação Durable Function:
Comece com os SDKs de Tarefas Duradouras: