Partilhar via


Tipos e recursos de funções duráveis

O Durable Functions é uma extensão do Azure Functions. Você pode usar Durable Functions para orquestração stateful da execução de funções. Um aplicativo de função durável é uma solução composta por diferentes funções do Azure. As funções podem desempenhar diferentes papéis em uma orquestração de funções durável.

Atualmente, há quatro tipos de função durável no Azure Functions: atividade, orquestrador, entidade e cliente. O restante desta seção entra em mais detalhes sobre os tipos de funções envolvidas em uma orquestração.

Funções de orquestrador

As funções do orquestrador descrevem como as ações são executadas e a ordem em que as ações são executadas. As funções do Orchestrator descrevem a orquestração em código (C# ou JavaScript), conforme mostrado nos padrões de aplicativo Durable Functions. Uma orquestração pode ter muitos tipos diferentes de ações, incluindo funções de atividade, suborquestrações, espera por eventos externos, HTTP e temporizadores. As funções do orquestrador também podem interagir com funções de entidade.

Nota

As funções do Orchestrator são escritas usando código comum, mas há requisitos rigorosos sobre como escrever o código. Especificamente, o código da função orchestrator deve ser determinístico. Não seguir esses requisitos de determinismo pode fazer com que as funções do orquestrador não sejam executadas corretamente. Informações detalhadas sobre esses requisitos e como contorná-los podem ser encontradas no tópico restrições de código.

Para obter informações mais detalhadas sobre as funções do orquestrador e seus recursos, consulte o artigo Orquestrações duráveis.

Funções de atividade

As funções de atividade são a unidade básica de trabalho em uma orquestração de funções durável. As funções de atividade são as funções e tarefas que são orquestradas no processo. Por exemplo, você pode criar uma função orchestrator para processar uma ordem. As tarefas envolvem verificar o inventário, cobrar o cliente e criar uma remessa. Cada tarefa seria uma função de atividade separada. Essas funções de atividade podem ser executadas em série, em paralelo ou alguma combinação de ambas.

Ao contrário das funções de orquestrador, as funções de atividade não são restritas no tipo de trabalho que você pode fazer nelas. As funções de atividade são frequentemente usadas para fazer chamadas de rede ou executar operações intensivas de CPU. Uma função de atividade também pode retornar dados para a função orchestrator. O Durable Task Framework garante que cada função de atividade chamada será executada pelo menos uma vez durante a execução de uma orquestração.

Nota

Como as funções de atividade só garantem pelo menos uma vez a execução, recomendamos que você torne sua lógica de função de atividade idempotente sempre que possível.

Use um gatilho de atividade para definir uma função de atividade. As funções .NET recebem um DurableActivityContext como parâmetro. Você também pode vincular o gatilho a qualquer outro objeto serializável por JSON para passar entradas para a função. Em JavaScript, você pode acessar uma entrada por meio da <activity trigger binding name> propriedade no context.bindings objeto. As funções de atividade só podem ter um único valor passado para elas. Para passar vários valores, você deve usar tuplas, matrizes ou tipos complexos.

Nota

Você pode acionar uma função de atividade somente a partir de uma função de orquestrador.

Funções da entidade

As funções de entidade definem operações para leitura e atualização de pequenos pedaços de estado. Muitas vezes nos referimos a essas entidades estatais 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, gatilho de entidade. Eles também podem ser invocados a partir de funções de cliente ou de funções de orquestrador. 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 gerenciam o estado explicitamente, em vez de representar implicitamente o estado por meio do fluxo de controle.

Nota

As funções de entidade e a funcionalidade relacionada só estão disponíveis em Funções duráveis 2.0 e superiores.

Para obter mais informações sobre funções de entidade, consulte o artigo Entidades duráveis.

Funções do cliente

As funções do orquestrador são acionadas por uma ligação de gatilho de orquestração e as funções de entidade são acionadas por uma ligação de gatilho de entidade. Ambos os gatilhos funcionam reagindo a mensagens que estão enfileiradas em um hub de tarefas. A principal maneira de entregar essas mensagens é usando uma vinculação de cliente orquestrador ou uma vinculação de cliente de entidade de dentro de uma função de cliente. Qualquer função que não seja orquestradora pode ser uma função cliente. Por exemplo, você pode acionar o orquestrador a partir de uma função acionada por HTTP, uma função acionada pelo Hub de Eventos do Azure, etc. O que torna uma função uma função de cliente é o uso da ligação de saída de cliente durável.

Nota

Ao contrário de outros tipos de função, as funções de orquestrador e entidade não podem ser acionadas diretamente usando os botões no Portal do Azure. Se você quiser testar uma função de orquestrador ou entidade no Portal do Azure, deverá executar uma função de cliente que inicie uma função de orquestrador ou entidade como parte de sua implementação. Para a experiência de teste mais simples, recomenda-se uma função de gatilho manual.

Além de acionar funções de orquestrador ou entidade, a ligação de cliente durável pode ser usada para interagir com orquestrações e entidades em execução. Por exemplo, orquestrações podem ser consultadas, encerradas e podem ter eventos gerados para elas. Para obter mais informações sobre como gerenciar orquestrações e entidades, consulte o artigo Gerenciamento de instâncias.

Próximos passos

Para começar, crie sua primeira função durável em C#, JavaScript, Python, PowerShell ou Java.