Partilhar via


Guia de início rápido: criar um aplicativo C# Durable Functions

Use Durable Functions, um recurso do Azure Functions, para escrever funções com monitoração de estado em um ambiente sem servidor. O Durable Functions gerencia o estado, os pontos de verificação e as reinicializações em seu aplicativo.

Como o Azure Functions, o Durable Functions dá suporte a dois modelos de processo para funções de biblioteca de classes .NET. Para saber mais sobre os dois processos, consulte Diferenças entre o processo de trabalho em processo e o processo de trabalho isolado .NET Azure Functions.

Neste início rápido, você usa o Visual Studio Code para criar e testar localmente um aplicativo de funções duráveis "hello world". O aplicativo de função orquestra e encadeia chamadas para outras funções. Em seguida, você publica o código da função no Azure. As ferramentas que você usa estão disponíveis por meio da extensão Visual Studio Code Azure Functions.

Captura de tela que mostra o código do aplicativo Durable Functions no Visual Studio Code.

Pré-requisitos

Para concluir este guia de início rápido, necessita de:

  • Visual Studio Code instalado.

  • As seguintes extensões de código do Visual Studio instaladas:

  • A versão mais recente do Azure Functions Core Tools instalada.

  • Uma subscrição do Azure. Para usar o Durable Functions, você deve ter uma conta de Armazenamento do Azure.

  • .NET Core SDK versão 3.1 ou posterior instalado.

  • Uma ferramenta de teste HTTP que mantém seus dados seguros. Para obter mais informações, consulte Ferramentas de teste HTTP.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um projeto das Funções do Azure

No Visual Studio Code, crie um projeto local do Azure Functions.

  1. No menu Exibir, selecione Paleta de comandos (ou selecione Ctrl+Shift+P).

  2. No prompt (>), insira e selecione Azure Functions: Create New Project.

    Captura de tela que mostra o comando para criar um projeto Functions.

  3. Selecione Procurar. Na caixa de diálogo Selecionar pasta, vá para uma pasta a ser usada para seu projeto e escolha Selecionar.

  4. Nos prompts, selecione ou insira os seguintes valores:

    Pedido Ação Descrição
    Selecione um idioma para seu projeto de aplicativo de função Selecione C#. Cria um projeto C# Functions local.
    Selecione uma versão Selecione Azure Functions v4. Você verá essa opção somente quando o Core Tools ainda não estiver instalado. O Core Tools é instalado na primeira vez que você executa o aplicativo.
    Selecione um tempo de execução do .NET Selecione .NET 8.0 isolado. Cria um projeto do Functions que dá suporte ao .NET 8 em execução em um processo de trabalho isolado e ao Azure Functions Runtime 4.0. Para obter mais informações, veja How to target Azure Functions runtime version (Como segmentar a versão do runtime das Funções do Azure).
    Selecione um modelo para a primeira função do seu projeto Selecione Orquestração de funções duráveis. Cria uma orquestração de funções duráveis.
    Escolha um tipo de armazenamento durável Selecione Armazenamento do Azure. O provedor de armazenamento padrão para funções duráveis. Para obter mais informações, consulte Provedores de armazenamento de funções duráveis.
    Fornecer um nome de função Digite HelloOrchestration. Um nome para a função de orquestração.
    Fornecer um namespace Digite Company.Function. Um namespace para a classe gerada.
    Selecione como gostaria de abrir o seu projeto Selecione Abrir na janela atual. Abre o Visual Studio Code na pasta selecionada.

O Visual Studio Code instala as Ferramentas Principais do Azure Functions se for necessário para criar o projeto. Ele também cria um projeto de aplicativo de função em uma pasta. Este projeto contém os arquivos de configuração host.json e local.settings.json .

Outro arquivo, HelloOrchestration.cs, contém os blocos de construção básicos de um aplicativo Durable Functions:

Método Description
HelloOrchestration Define a orquestração do aplicativo Durable Functions. Nesse caso, a orquestração é iniciada, cria uma lista e, em seguida, adiciona o resultado de três chamadas de funções à lista. Quando as três chamadas de função terminam, ele retorna a lista.
SayHello Um aplicativo de função simples que retorna olá. Esta função contém a lógica de negócios que é orquestrada.
HelloOrchestration_HttpStart Uma função acionada por HTTP que inicia uma instância da orquestração e retorna uma resposta de status de verificação.

Para obter mais informações sobre essas funções, consulte Tipos e recursos de funções duráveis.

Configurar o armazenamento

Você pode usar o Azurite, um emulador para o Armazenamento do Azure, para testar a função localmente. Em local.settings.json, defina o valor para AzureWebJobsStorage UseDevelopmentStorage=true like neste exemplo:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

Para instalar e começar a executar a extensão Azurite no Visual Studio Code, na paleta de comandos, digite Azurite: Start e selecione Enter.

Você pode usar outras opções de armazenamento para seu aplicativo Durable Functions. Para obter mais informações sobre opções e benefícios de armazenamento, consulte Provedores de armazenamento de funções duráveis.

Testar localmente a função

As Ferramentas Principais do Azure Functions oferecem a capacidade de executar um projeto do Azure Functions em seu computador de desenvolvimento local. Você será solicitado a instalar essas ferramentas na primeira vez que iniciar uma função no Visual Studio Code.

  1. No Visual Studio Code, defina um ponto de interrupção no código da SayHello função de atividade e selecione F5 para iniciar o projeto de aplicativo de função. O painel do terminal exibe a saída das Ferramentas Principais.

    Nota

    Para obter mais informações sobre depuração, consulte Diagnóstico de funções duráveis.

    Se a mensagem Nenhuma função de trabalho encontrada for exibida , atualize a instalação das Ferramentas Principais do Azure Functions para a versão mais recente.

  2. No painel do terminal, copie o ponto de extremidade URL da sua função acionada por HTTP.

    Captura de ecrã da janela de saída local do Azure.

  3. Use uma ferramenta de teste HTTP para enviar uma solicitação HTTP POST para o ponto de extremidade URL.

    A resposta é o resultado inicial da função HTTP. Ele permite que você saiba que a orquestração do aplicativo Durable Functions foi iniciada com êxito. Ainda não exibe o resultado final da orquestração. A resposta inclui alguns URLs úteis.

    Neste ponto, seu ponto de interrupção na função de atividade deve ser atingido porque a orquestração foi iniciada. Percorra-o para obter uma resposta para o status da orquestração.

  4. Copie o valor do URL para statusQueryGetUri, cole-o na barra de endereço do navegador e execute a solicitação. Como alternativa, você também pode continuar a usar a ferramenta de teste HTTP para emitir a solicitação GET.

    A solicitação consulta a instância de orquestração para obter o status. Você deve ver que a instância terminou e que inclui as saídas ou resultados do aplicativo Durable Functions, como neste exemplo:

    {
        "name":"HelloCities",
        "instanceId":"7f99f9474a6641438e5c7169b7ecb3f2",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello, Seattle!",
        "createdTime":"2023-01-31T18:48:49Z",
        "lastUpdatedTime":"2023-01-31T18:48:56Z"
    }
    

    Gorjeta

    Saiba como pode observar o comportamento de repetição de uma aplicação Durable Functions através de pontos de interrupção.

  5. Para parar a depuração, no Visual Studio Code, selecione Shift+F5.

Depois de verificar se a função é executada corretamente em seu computador local, é hora de publicar o projeto no Azure.

Iniciar sessão no Azure

Antes de criar recursos do Azure ou publicar seu aplicativo, você deve entrar no Azure.

  1. Se ainda não tiver sessão iniciada, na barra de atividades, selecione o ícone do Azure. Em seguida, em Recursos, selecione Entrar no Azure.

    Captura de ecrã do início de sessão na janela do Azure no Visual Studio Code.

    Se já tiver sessão iniciada e conseguir ver as suas subscrições existentes, vá para a secção seguinte. Se ainda não tiver uma conta do Azure, selecione Criar uma Conta do Azure. Os alunos podem selecionar Criar uma Conta do Azure para Estudantes.

  2. Quando você for solicitado no navegador, selecione sua conta do Azure e entre usando suas credenciais de conta do Azure. Se criar uma nova conta, pode iniciar sessão depois de a sua conta ser criada.

  3. Depois de iniciar sessão com êxito, pode fechar a nova janela do browser. As assinaturas que pertencem à sua conta do Azure são exibidas na barra lateral.

Criar o aplicativo de função no Azure

Nesta seção, você cria um aplicativo de função e recursos relacionados em sua assinatura do Azure. Muitas das decisões de criação de recursos são tomadas para você com base em comportamentos padrão. Para obter mais controle sobre os recursos criados, você deve, em vez disso , criar seu aplicativo de função com opções avançadas.

  1. No Visual Studio Code, selecione F1 para abrir a paleta de comandos. No prompt (>), insira e selecione Azure Functions: Create Function App in Azure.

  2. Nos prompts, forneça as seguintes informações:

    Pedido Ação
    Selecionar subscrição Selecione a assinatura do Azure a ser usada. O prompt não aparece quando você tem apenas uma assinatura visível em Recursos.
    Insira um nome globalmente exclusivo para o aplicativo de função Insira um nome válido em um caminho de URL. O nome introduzido é validado para garantir que é exclusivo no Azure Functions.
    Selecione uma pilha de tempo de execução Selecione a versão de idioma que você executa localmente no momento.
    Selecione um local para novos recursos Selecione uma região do Azure. Para um melhor desempenho, selecione uma região perto de si.

    No painel Azure: Log de Atividades, a extensão do Azure mostra o status de recursos individuais à medida que são criados no Azure.

    Captura de tela que mostra o log de criação de recursos do Azure.

  3. Quando o aplicativo de função é criado, os seguintes recursos relacionados são criados em sua assinatura do Azure. Os recursos são nomeados com base no nome que você inseriu para seu aplicativo de função.

    • Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
    • Uma conta de Armazenamento do Azure padrão, que mantém o estado e outras informações sobre seus projetos.
    • Um aplicativo de função, que fornece o ambiente para executar seu código de função. Um aplicativo de função permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos dentro do mesmo plano de hospedagem.
    • Um plano do Serviço de Aplicativo do Azure, que define o host subjacente para seu aplicativo de função.
    • Uma instância do Application Insights conectada ao aplicativo de função e que rastreia o uso de suas funções no aplicativo.

    Depois de criar a aplicação de funções, é apresentada uma notificação e o pacote de implementação é aplicado.

    Gorjeta

    Por padrão, os recursos do Azure exigidos pelo seu aplicativo de função são criados com base no nome que você insere para seu aplicativo de função. Por padrão, os recursos são criados com o aplicativo de função no mesmo novo grupo de recursos. Se você quiser personalizar os nomes dos recursos associados ou reutilizar recursos existentes, publique o projeto com opções avançadas de criação.

Implementar o projeto no Azure

Importante

A implantação em um aplicativo de função existente sempre substitui o conteúdo desse aplicativo no Azure.

  1. Na paleta de comandos, insira e selecione Azure Functions: Deploy to Function App.

  2. Selecione o aplicativo de função que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso de aplicativo de função.

  3. Quando a implantação estiver concluída, selecione Exibir Saída para exibir os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você perder a notificação, selecione o ícone de sino no canto inferior direito para vê-lo novamente.

    Captura de ecrã da janela Ver Saída.

Testar a sua função no Azure

  1. No painel de saída Visual Studio Code, copie a URL do gatilho HTTP. A URL que chama sua função acionada por HTTP deve estar no seguinte formato:

    https://<function-app-name>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Cole o novo URL para a solicitação HTTP na barra de endereço do navegador. Você deve obter a mesma resposta de status que recebeu quando testou localmente ao usar o aplicativo publicado.

O aplicativo C# Durable Functions que você criou e publicou usando o Visual Studio Code está pronto para uso.

Clean up resources (Limpar recursos)

Se você não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados em sua assinatura do Azure, exclua o grupo de recursos e todos os recursos relacionados.

  • Saiba mais sobre os padrões comuns do aplicativo Durable Functions.

Neste início rápido, você usa o Visual Studio 2022 para criar e testar localmente um aplicativo de Funções Duráveis "hello world". A função orquestra e encadeia chamadas para outras funções. Em seguida, você publica o código da função no Azure. As ferramentas que você usa estão disponíveis por meio da carga de trabalho de desenvolvimento do Azure no Visual Studio 2022.

Captura de ecrã do código da aplicação Durable Functions no Visual Studio 2019.

Pré-requisitos

Para concluir este guia de início rápido, necessita de:

  • Visual Studio 2022 instalado.

    Verifique se a carga de trabalho de desenvolvimento do Azure também está instalada. O Visual Studio 2019 também oferece suporte ao desenvolvimento de Funções Duráveis, mas a interface do usuário e as etapas são diferentes.

  • O emulador Azurite instalado e em execução.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um projeto de aplicação de função

O modelo do Azure Functions cria um projeto que você pode publicar em um aplicativo de função no Azure. Você pode usar um aplicativo de função para agrupar funções como uma unidade lógica para gerenciar, implantar, dimensionar e compartilhar recursos com mais facilidade.

  1. No Visual Studio, no menu Arquivo, selecione Novo>Projeto.

  2. Em Criar um novo projeto, procure funções, selecione o modelo Azure Functions e, em seguida, selecione Seguinte.

    Captura de tela da caixa de diálogo Novo projeto no Visual Studio.

  3. Em Nome do projeto, insira um nome para o projeto e selecione OK. O nome do projeto deve ser válido como um namespace C#, portanto, não use sublinhados, hífenes ou caracteres não alfanuméricos.

  4. Em Informações adicionais, use as configurações descritas na tabela a seguir.

    Captura de tela da caixa de diálogo Criar um novo Aplicativo do Azure Functions no Visual Studio.

    Definição Ação Descrição
    Funções de trabalhador Selecione .NET 8 Isolado (Suporte de longo prazo). Cria um projeto do Azure Functions que dá suporte ao .NET 8 em execução em um processo de trabalho isolado e ao Azure Functions Runtime 4.0. Para obter mais informações, consulte Como direcionar a versão de tempo de execução do Azure Functions.
    Função Insira a orquestração de funções duráveis. Cria uma orquestração de funções duráveis.

    Nota

    Se o .NET 8 Isolado (Suporte de Longo Prazo) não aparecer no menu de trabalho do Functions, talvez você não tenha os conjuntos de ferramentas e modelos mais recentes do Azure Functions. Vá para Opções de>Ferramentas>Projetos e Soluções>Azure Functions>Verifique se há atualizações para baixar as mais recentes.

  5. Para usar o emulador Azurite, verifique se a caixa de seleção Usar Azurite para conta de armazenamento em tempo de execução (AzureWebJobStorage) está marcada. Para criar um projeto do Functions usando um modelo de orquestração do Durable Functions, selecione Criar. O projeto tem os arquivos de configuração básica que você precisa para executar suas funções.

    Nota

    Você pode escolher outras opções de armazenamento para seu aplicativo Durable Functions. Para obter mais informações, consulte Provedores de armazenamento de funções duráveis.

Na pasta do aplicativo, um arquivo chamado Function1.cs contém três funções. As três funções são os blocos de construção básicos de um aplicativo Durable Functions:

Método Description
RunOrchestrator Define a orquestração do aplicativo Durable Functions. Nesse caso, a orquestração é iniciada, cria uma lista e, em seguida, adiciona o resultado de três chamadas de funções à lista. Quando as três chamadas de função terminam, ele retorna a lista.
SayHello Um aplicativo de função simples que retorna olá. Esta função contém a lógica de negócios que é orquestrada.
HttpStart Uma função acionada por HTTP que inicia uma instância da orquestração e retorna uma resposta de status de verificação.

Para obter mais informações sobre essas funções, consulte Tipos e recursos de funções duráveis.

Testar localmente a função

As Ferramentas Principais do Azure Functions oferecem a capacidade de executar um projeto do Azure Functions em seu computador de desenvolvimento local. Você será solicitado a instalar essas ferramentas na primeira vez que iniciar uma função no Visual Studio Code.

  1. No Visual Studio Code, defina um ponto de interrupção no código da SayHello função de atividade e selecione F5. Se você for solicitado, aceite a solicitação do Visual Studio para baixar e instalar as ferramentas do Azure Functions Core (linha de comando). Também pode ser necessário habilitar uma exceção de firewall para que as ferramentas possam lidar com solicitações HTTP.

    Nota

    Para obter mais informações sobre depuração, consulte Diagnóstico de funções duráveis.

  2. Copie o URL da sua função na saída do tempo de execução das funções do Azure.

    Captura de tela do tempo de execução local do Azure.

  3. Cole o URL da solicitação HTTP na barra de endereço do navegador e execute a solicitação. A captura de tela a seguir mostra a resposta à solicitação GET local que a função retorna no navegador:

    Captura de tela da janela do navegador com statusQueryGetUri chamado.

    A resposta é o resultado inicial da função HTTP. Ele permite que você saiba que a orquestração durável começou com sucesso. Ainda não exibe o resultado final da orquestração. A resposta inclui alguns URLs úteis.

    Neste ponto, seu ponto de interrupção na função de atividade deve ser atingido porque a orquestração foi iniciada. Percorra-o para obter uma resposta para o status da orquestração.

  4. Copie o valor do URL para statusQueryGetUri, cole-o na barra de endereço do navegador e execute a solicitação.

    A solicitação consulta a instância de orquestração para obter o status. Você deve ver que a instância terminou e que inclui as saídas ou resultados da função durável, como neste exemplo:

    {
        "name":"HelloCities",
        "instanceId":"668814ac6ce84a43a9e6757f81dbc0bc",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello Seattle!",
        "createdTime":"2023-01-31T16:44:34Z",
        "lastUpdatedTime":"2023-01-31T16:44:37Z"
    }
    

    Gorjeta

    Saiba como pode observar o comportamento de repetição de uma aplicação Durable Functions através de pontos de interrupção.

  5. Para interromper a depuração, selecione Shift+F5.

Depois de verificar se a função é executada corretamente em seu computador local, é hora de publicar o projeto no Azure.

Publicar o projeto no Azure

Você deve ter um aplicativo de função em sua assinatura do Azure antes de publicar seu projeto. Você pode criar um aplicativo de função no Visual Studio.

  1. No Explorador de Soluções, clique com o botão direito do rato no projeto e selecione Publicar. Em Destino, selecione Azure e, em seguida, selecione Avançar.

    Captura de ecrã do painel de publicação.

  2. Em Destino específico, selecione Aplicativo de Função do Azure (Windows). Um aplicativo de função que é executado no Windows é criado. Selecione Seguinte.

    Captura de ecrã do painel de publicação com um destino específico.

  3. Na instância do Functions, selecione Criar uma nova Função do Azure.

    Captura de tela que mostra Criar uma nova instância de aplicativo de função.

  4. Crie uma nova instância usando os valores especificados na tabela a seguir:

    Definição valor Descrição
    Nome Nome globalmente exclusivo Nome que identifica exclusivamente a sua nova aplicação de funções. Aceite este nome ou introduza um novo nome. Os caracteres válidos são: a-z, 0-9, e -.
    Subscrição a sua subscrição A subscrição do Azure que deve utilizar. Aceite esta assinatura ou selecione uma nova na lista suspensa.
    Grupo de recursos Nome do grupo de recursos O grupo de recursos no qual você deseja criar seu aplicativo de função. Selecione Novo para criar um novo grupo de recursos. Você também pode optar por usar um grupo de recursos existente na lista suspensa.
    Tipo de Plano Consumo Quando você publica seu projeto em um aplicativo de função que é executado em um plano de consumo, você paga apenas pelas execuções do seu aplicativo de funções. Outros planos de hospedagem incorrem em custos mais altos.
    Location Localização do serviço da aplicação Selecione um Local em uma região do Azure perto de você ou de outros serviços que suas funções acessam.
    Armazenamento do Azure Conta de armazenamento de uso geral O runtime das Funções precisa de uma conta de armazenamento do Azure. Selecione Novo para configurar uma conta de armazenamento de uso geral. Você também pode optar por usar uma conta existente que atenda aos requisitos da conta de armazenamento.
    Application Insights Instância do Application Insights Você deve habilitar a integração do Azure Application Insights para seu aplicativo de função. Selecione Novo para criar uma nova instância, em um espaço de trabalho novo ou existente do Log Analytics. Você também pode optar por usar uma instância existente.

    Captura de tela da caixa de diálogo Criar Serviço de Aplicativo.

  5. Selecione Criar para criar um aplicativo de função e seus recursos relacionados no Azure. O status da criação de recursos é mostrado no canto inferior esquerdo da janela.

  6. Na instância Functions, verifique se a caixa de seleção Executar do arquivo do pacote está marcada. Seu aplicativo de função é implantado usando Zip Deploy com o modo Run-From-Package habilitado. Zip Deploy é o método de implantação recomendado para seu projeto de funções para melhor desempenho.

    Captura de ecrã do painel de criação de perfil Concluir.

  7. Selecione Concluir e, no painel Publicar , selecione Publicar para implantar o pacote que contém seus arquivos de projeto em seu novo aplicativo de função no Azure.

    Quando a implantação é concluída, a URL raiz do aplicativo de função no Azure é mostrada na guia Publicar .

  8. Na guia Publicar, na seção Hospedagem, selecione Abrir no portal do Azure. O novo recurso do aplicativo de função do Azure é aberto no portal do Azure.

    Captura de ecrã da mensagem Publicar êxito.

Testar a sua função no Azure

  1. Na página Publicar perfil, copie a URL base do aplicativo de função. Substitua a localhost:port parte da URL que você usou quando testou a função localmente pela nova URL base.

    A URL que chama seu gatilho HTTP de função durável deve estar no seguinte formato:

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. Cole o novo URL para a solicitação HTTP na barra de endereço do navegador. Ao testar o aplicativo publicado, você deve obter a mesma resposta de status que obteve quando testou localmente.

O aplicativo C# Durable Functions que você criou e publicou usando o Visual Studio está pronto para uso.

Clean up resources (Limpar recursos)

Se você não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados em sua assinatura do Azure, exclua o grupo de recursos e todos os recursos relacionados.

  • Saiba mais sobre os padrões comuns do aplicativo Durable Functions.