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 de Azure Functions que adiciona funcionalidades de orquestração de estado ao seu app de funções. Um aplicativo Durable Functions é composto por diferentes funções de Azure, cada uma desempenhando uma função específica: orquestrador, atividade, entidade ou cliente. Essas funções correspondem a tipos de gatilho e associação especializados que a extensão do Durable Functions fornece.
Os SDKs de Tarefa Durável permitem que você crie aplicativos com estado e tolerantes a falhas em qualquer plataforma de computação. Seu aplicativo define orquestradores, atividades e entidades como classes ou funções registradas com um trabalho. Uma API de cliente separada permite que você inicie e gerencie instâncias de orquestração.
A tabela a seguir resume os principais componentes de programação e suas funções:
| Componente | Função | Definido por |
|---|---|---|
| Orquestrador | Coordena a lógica do fluxo de trabalho | Gatilho de orquestração |
| Atividade | Executa uma única unidade de trabalho | Gatilho de atividade |
| Entidade | Gerencia um pequeno pedaço de estado | Gatilho de entidade |
| Cliente | Inicia e gerencia orquestrações e entidades | Conexão de cliente durável |
| Componente | Função | Definido por |
|---|---|---|
| Orquestrador | Coordena a lógica do fluxo de trabalho | Uma classe ou função registrada com o trabalhador |
| Atividade | Executa uma única unidade de trabalho | Uma classe ou função registrada com o trabalhador |
| Entidade | Gerencia um pequeno pedaço de estado | Uma classe associada ao trabalho |
| Cliente | Inicia e gerencia orquestrações e entidades |
DurableTaskClient Interface de Programação de Aplicações (API) |
Orquestradores
Os orquestradores definem o fluxo de trabalho: quais ações tomar, em que ordem e como lidar com os resultados. Você escreve a lógica do orquestrador como código comum usando constructos de fluxo de controle padrão, como loops, condicionales e blocos try/catch.
Um orquestrador pode agendar vários tipos de tarefas:
- Atividades para execução de trabalho
- Sub-orquestrações para compor fluxos de trabalho menores
- Temporizadores duráveis para atrasos e tempos limite
- Eventos externos para aguardar sinais externos à orquestração
Os orquestradores também podem interagir com entidades.
No Durable Functions, você define um orquestrador usando a associação de gatilho de orquestração. O gatilho fornece um objeto de contexto que você usa para agendar tarefas e receber resultados.
Em SDKs de Tarefa Durável, você define um orquestrador implementando uma classe ou função e registrando-a no trabalho de Tarefa Durável. O orquestrador recebe um objeto de contexto que você usa para agendar tarefas e receber resultados.
Importante
O código do orquestrador deve ser determinístico. O runtime da Tarefa Durável usa fornecimento de eventos e reprodução para recriar o estado do orquestrador; assim, o código não determinístico pode gerar falhas ou deadlocks. Para obter diretrizes detalhadas, consulte restrições de código do Orchestrator.
Para obter uma visão geral completa do comportamento do orquestrador, incluindo reprodução, identidade da instância e tratamento de erros, confira Orquestrações duráveis.
Activities
As atividades são a unidade básica de trabalho em uma orquestração durável. Cada atividade normalmente representa uma única tarefa, como chamar uma API Web, gravar em um banco de dados ou calcular um resultado. Orquestradores chamam atividades para realizar o trabalho real.
As atividades diferem dos orquestradores em aspectos fundamentais:
- Nenhuma restrição 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 execução longa.
- Execução ao menos uma vez. O runtime 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 registrado, o runtime poderá executá-la novamente.
- Responsabilidade única. Cada atividade recebe uma entrada e retorna uma saída. Para passar vários valores, use um tipo ou coleção complexo.
Você define uma função de atividade usando a vinculação de gatilho de atividade. O gatilho fornece a entrada que o orquestrador passou ao agendar a atividade.
Você define uma atividade ao implementar uma classe ou função, e registrá-la com o trabalho da Tarefa Durável. Quando agendada, a atividade recebe a entrada que foi passada pelo orquestrador.
Observação
Como as atividades garantem apenas uma execução pelo menos uma vez, sempre que possível, torne sua lógica de atividade idempotente. Por exemplo, use "upserts" em vez de inserções ou verifique se há resultados existentes antes de criar novos recursos.
As atividades podem ser executadas em série, em paralelo ou em uma combinação de ambas.
Entities
As entidades gerenciam partes de estado pequenas e duráveis. Cada entidade tem uma identidade exclusiva e um conjunto de operações nomeadas que podem ler ou atualizar seu estado interno. As entidades diferem dos orquestradores, pois gerenciam o estado explicitamente por meio de operações em vez de implicitamente por meio do fluxo de controle. Eles também diferem dos orquestradores, pois não têm as mesmas restrições de código. As operações de entidade podem executar qualquer código, incluindo operações não determinísticas ou de execução longa.
Os usos comuns para entidades incluem:
- Agregando dados de várias fontes
- Implementando bloqueios distribuídos ou semáforos
- Modelagem de 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 por vez para uma determinada instância de entidade. Essa execução serial impede conflitos de simultaneidade sem exigir bloqueio explícito.
Você define uma função de entidade usando a associação de gatilho de entidade.
Observação
As funções de entidade têm suporte em .NET, JavaScript/TypeScript, Python e Java, mas não no PowerShell.
Para definir uma entidade, você implementa uma classe e a registra no trabalho da Tarefa Durável.
Observação
O suporte à entidade está disponível nos SDKs .NET, JavaScript/TypeScript e Python. Atualmente, o SDK do Java não dá suporte a entidades.
Para obter um guia completo para definir, chamar e gerenciar entidades, consulte entidades duráveis.
Cliente
O componente cliente é como você interage com orquestrações e entidades de fora da orquestração. As operações comuns do cliente incluem:
- Agendar novas instâncias de orquestração
- Consultar o status de orquestrações em execução ou concluídas
- Gerar eventos para orquestrações em espera
- Suspender e retomar instâncias de orquestração
- Encerrando instâncias de orquestração
- Sinalizar operações de entidade e ler o estado da entidade
Qualquer função não orquestradora pode atuar como uma função de cliente. O que o torna um cliente é o uso da associação de saída do cliente durável. Por exemplo, você pode iniciar uma orquestração de uma função disparada por HTTP, por fila ou por temporizador.
A associação de cliente durável também fornece APIs para interagir com entidades, incluindo sinalizar operações de entidade e ler o estado da entidade. Para saber mais, confira a associação de cliente de entidade.
Em SDKs de Tarefa Durável, você interage com orquestrações e entidades por meio da classe DurableTaskClient. Você cria uma instância de cliente no código do seu aplicativo e utiliza seus métodos para iniciar, consultar ou gerenciar instâncias de orquestração e entidade. O cliente pode ser usado de qualquer parte do aplicativo – um ponto de extremidade HTTP, um serviço em segundo plano, um aplicativo de console ou qualquer outro código.
Para obter informações detalhadas sobre todas as operações de gerenciamento de instância, incluindo exemplos de código para cada idioma, consulte Gerenciar instâncias de orquestração.
Próximas Etapas
Comece criando seu primeiro aplicativo de funções duráveis:
Introdução aos SDKs de Durable Task