Tipos de função e recursos das Durable Functions

As Durable Functions são uma extensão do Azure Functions. Você pode usar as Durable Functions para orquestração com estado da execução de funções. Uma aplicativo de funções durável é uma solução composta por diferentes funções do Azure. As funções podem executar funções diferentes em uma orquestração de função durável.

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

Funções de orquestrador

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

Observação

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

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

Funções de atividade

Funções de atividade são a unidade básica de trabalho em uma função de orquestração durável. Funções de atividade são as funções e as tarefas que são orquestradas no processo. Por exemplo, você pode criar uma função de orquestrador para processar um pedido. As tarefas envolvem verificação do estoque, cobrança ao cliente e criação de 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 como alguma combinação de ambos.

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 usadas frequentemente para fazer chamadas de rede ou executar operações de uso intensivo da CPU. Uma função de atividade também pode retornar dados para a função de orquestrador. A Estrutura de Tarefa Durável garante que cada função de atividade chamada seja executada pelo menos uma vez durante a execução de uma orquestração.

Observação

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

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

Observação

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

Funções de entidade

As funções de entidade definem operações para leitura e atualização de pequenas partes de estado. Geralmente nos referimos a essas entidades com estado 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, o gatilho de entidade. Eleas também podem ser invocadas a partir de funções de cliente ou de funções de orquestrador. Ao contrário das funções de orquestrador, as funções de entidade não têm qualquer de código específica. As funções de entidade também gerenciam o estado explicitamente, em vez de representar implicitamente o estado por meio do fluxo de controle.

Observação

As funções de entidade e a funcionalidade relacionada estão disponíveis apenas nas Durable Functions 2.0 e superior.

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

Funções do cliente

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

Observação

Diferentemente dos outros tipos de função, as funções de orquestrador e de entidade não podem ser disparadas diretamente usando os botões no portal do Azure. Se você quiser testar uma função de orquestrador ou de entidade no portal do Azure, deverá executar uma função de cliente que inicia uma função de orquestrador ou de entidade como parte de sua implementação. Para a experiência de teste mais simples, uma função de gatilho manual é recomendável.

Além de disparar as funções de orquestrador ou de entidade, a associaçã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, terminadas 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óximas etapas

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