Compartilhar via


Início Rápido: criar um aplicativo C# de Durable Functions

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

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

Neste artigo de início rápido, você usa o Visual Studio Code para criar e testar localmente um aplicativo Durable Functions "olá, mundo". O aplicativo de funções orquestrará e encadeará chamadas para outras funções. Em seguida, você publicará o código de função no Azure. As ferramentas que você usa estão disponíveis por meio da eextensão do Visual Studio Code.

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

Pré-requisitos

Para concluir este início rápido, você precisa de:

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um projeto do Azure Functions

O Visual Studio Code,criar um projeto localmente no Azure Functions.

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

  2. No prompt (>), insira e selecione Azure Functions: Criar Novo Projeto.

    Captura de tela que mostra o Comando para criar uma função de projeto.

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

  4. Todos os prompts, selecione ou insira os valores a seguir:

    Prompt Ação Descrição
    Selecione um idioma para o seu projeto de aplicativo de funções selecione C#. Cria um projeto local do Functions em C#.
    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.
    Selecionar um runtime do .NET Selecione .NET 8.0 Isolado. Cria um projeto de Funções que dá suporte ao .NET 8 em execução um processo de trabalho isolado e ao Azure Functions Runtime 4.0. Para obter mais informações, consulte Como direcionar para versões do Azure Functions runtime.
    Selecione um modelo para a primeira função do projeto Selecione Orquestração de Durable Functions. Cria uma orquestração de Durable Functions.
    Escolha um tipo de armazenamento durável Selecione Armazenamento do Microsoft Azure. O provedor de armazenamento padrão para Durable Functions. Para obter mais informações, consulte Provedores de Armazenamento do Durable Functions.
    Forneça um nome de função Inserir HelloOrchestration. Um nome para a função de orquestração.
    Forneça um namespace Inserir Company.Function. Um namespace da classe gerada.
    Selecione como deseja abrir o projeto Selecione Abrir na janela atual. Abre o Visual Studio Code na pasta selecionada.

O Visual Studio Code instala o Azure Functions Core Tools se for necessário para criar o projeto. Ele também cria o projeto de aplicativo de funções 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 Descrição
HelloOrchestration Define a orquestração de aplicativos Durable Functions. Nesse caso, a orquestração é iniciada, cria uma lista e depois adiciona o resultado de três chamadas de função à lista. Quando as três chamadas de função são finalizadas, ela retorna a lista.
SayHello Um aplicativo de funções simples que retorna hello. Esta função contém a lógica de negócios que está orquestrada.
HelloOrchestration_HttpStart Uma função disparada por HTTP que inicia uma instância da orquestração e retorna uma resposta de verificação de status.

Para obter mais informações sobre essas funções, consulte Tipos e recursos da Durable Functions.

Configurar o armazenamento

Use o Azurite,um emulador para o Armazenamento do Microsoft Azure, para testar a função localmente. Em local.settings.json, defina o valor de AzureWebJobsStorage para UseDevelopmentStorage=true como neste exemplo:

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

Para instalar e começar a executar a extensão do Azurite no Visual Studio Code, na paleta de comandos, insira Azurite: Iniciar e selecionar Enter.

Você pode usar outras opções de armazenamento no seu aplicativo Durable Functions. Para obter mais informações sobre opções de armazenamento e benefícios, consulte provedores de armazenamento de Durable Functions.

Testar a função localmente

As Azure Functions Core Tools 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 função de atividade SayHello e então selecione F5 para iniciar o projeto do aplicativo de funções. O painel Terminal exibirá saída do Core Tools.

    Observação

    Para obter mais informações sobre depuração, veja Diagnóstico de Durable Functions.

    Se a mensagemNenhuma função de trabalho encontrada, aparece atualizar sua instalação do Azure Functions Core Tools para a versão mais recente.

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

    Captura de tela da janela saída local do Azure.

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

    A resposta é o resultado inicial da função HTTP. Ela informa que o aplicativo da Durable Functions foi iniciada com sucesso. Ainda não exibe o resultado final da orquestração. A resposta inclui algumas URLs úteis.

    Neste ponto, o 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 seu 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 do status. Você deverá ver que a instância foi concluída e inclui as saídas ou resultados do aplicativo Durable Functions, como nesse 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"
    }
    

    Dica

    Saiba como você pode observar o comportamento de reprodução de um aplicativo Durable Functions por meio de pontos de interrupção.

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

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

Entrar no Azure

Antes de criar recursos do Azure ou publicar o aplicativo, entre no Azure.

  1. Se ainda não estiver conectado, selecione o ícone do Azure na barra de Atividades. Em seguida, em Recursos, selecione Entrar no Azure.

    Captura de tela do login na janela do Azure no Visual Studio Code.

    Se você já estiver conectado e puder ver suas assinaturas existentes, vá para a próxima seção. Se ainda não tiver uma conta do Azure, selecione Criar uma Conta do Azure. Os alunos podem selecionar Criar uma Conta do Microsoft Azure for Students.

  2. Quando for solicitado no navegador, selecione sua conta do Azure e entre usando as credenciais da sua conta do Azure. Se você criar uma conta, poderá se conectar depois que a conta for criada.

  3. Após fazer login com sucesso, você poderá fechar a nova janela do navegador. As assinaturas que pertencem à sua conta do Azure são exibidas na barra lateral.

Criar o aplicativo de funções no Azure

Nesta seção, você criará um aplicativo de funções e os recursos relacionados na 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 mais controle sobre os recursos criados, você deve criar seu aplicativo de função com opções avançadas.

  1. No Visual Studio Code, pressione F1 para abrir a paleta de comandos. No prompt (>), insira e, em seguida, selecione Azure Functions: Criar Aplicativo de Funções no Azure.

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

    Prompt Ação
    Selecionar uma assinatura 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 exclusivo globalmente para o aplicativo de funções Digite um nome que seja válido em um caminho de URL. O nome que você digitar será validado para garantir que seja exclusivo no Azure Functions.
    Selecionar uma pilha de runtime Selecione a versão da linguagem que você executa localmente no momento.
    Selecione uma localização para novos recursos Selecionar uma Região do Azure. Para obter um melhor desempenho, escolha uma região perto de você.

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

    Captura de tela mostrando o log da criação de recursos do Azure.

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

    • 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ções, que fornece o ambiente para a execução do código de função. Um aplicativo de funções lhe 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 do seu aplicativo de funções.
    • Uma instância do Application Insights conectada ao aplicativo de funções que acompanha o uso das suas funções no aplicativo.

    Uma notificação é exibida depois que seu aplicativo de funções é criado e o pacote de implantação é aplicado.

    Dica

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

Implantar o projeto no Azure

Importante

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

  1. Na paleta de comandos, insira e, em seguida, selecione Azure Functions: Implantar no Aplicativo de Funções.

  2. Selecione o aplicativo de funções 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 do aplicativo de funções.

  3. Após sua implantação ser concluída, escolha Ver o resultado para ver os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você deixou passar a notificação, selecione o ícone de sino no canto inferior direito para vê-la novamente.

    Captura de tela da janela Exibir saída

Testar sua função no Azure

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

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

  2. Cole o novo URL da solicitação HTTP na barra de endereço do seu navegador. Você consegue a mesma resposta de status que obteve quando testou localmente quando usa o aplicativo publicado.

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

Limpar os recursos

Se já não precisar dos recursos que criou para concluir o arranque rápido, para evitar custos relacionados na sua subscrição do Azure, elimine o grupo de recursos e todos os recursos relacionados.

Neste artigo de início rápido, você usa o Visual Studio 2022 para criar e testar localmente um aplicativo Durable Functions "olá, mundo". Essas funções orquestrará e encadeará chamadas para outras funções. Em seguida, você publicará o código de função no Azure. As ferramentas que você usar estão disponíveis via a carga de trabalho de desenvolvimento do Azure no Visual Studio 2022.

Captura de tela do código do aplicativo Durable Functions no Visual Studio 2019.

Pré-requisitos

Para concluir este início rápido, você precisa de:

  • Visual Studio 2022 instalado.

    Garanta que a carga de trabalho de desenvolvimento do Azure também seja instalada. O Visual Studio 2019 também dá suporte ao desenvolvimento de Durable Functions, mas a interface do usuário e as etapas são diferentes.

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

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Crie um projeto de aplicativo de funções

O modelo do Azure Functions cria um projeto que pode publica em um aplicativo de funções no Azure. Você pode usar um aplicativo de funções para as funções do grupo como uma unidade lógica para gerenciamento mais fácil, implantar escala e compartilhar recursos.

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

  2. Em Criar um projeto, procure por functions, selecione o modelo Azure Functions, e depois selecione Avançar.

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

  3. Para Nome do projeto insira um nome para seu projeto,e depois selecione OK. O nome do projeto precisa ser válido como um namespace do C#. Portanto, não use sublinhados, hifens ou caracteres não alfanuméricos.

  4. Em Informações adicionais, use as configurações descritas na próxima tabela.

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

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

    Observação

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

  5. Para usar o emulador do Azurite, verifique se o usar o Azurite para a conta de armazenamento de runtime (AzureWebJobStorage) caixa de seleção está selecionada. Para criar um projeto de função usando um modelo de orquestração do Durable Functions, selecione Criar. Estes projetos têm os arquivos de configuração básicos necessários que você precisa para executar suas funções.

    Observação

    Você pode escolher outras opções de armazenamento no seu aplicativo Durable Functions. Para obter mais informações, consulte Provedores de Armazenamento do Durable Functions.

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 Descrição
RunOrchestrator Define a orquestração de aplicativos Durable Functions. Nesse caso, a orquestração é iniciada, cria uma lista e depois adiciona o resultado de três chamadas de função à lista. Quando as três chamadas de função são finalizadas, ela retorna a lista.
SayHello Um aplicativo de funções simples que retorna hello. Esta função contém a lógica de negócios que está orquestrada.
HttpStart Uma função disparada por HTTP que inicia uma instância da orquestração e retorna uma resposta de verificação de status.

Para obter mais informações sobre essas funções, consulte Tipos e recursos da Durable Functions.

Testar a função localmente

As Azure Functions Core Tools 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 SayHello de função e então selecione F5. Se solicitado, aceite a solicitação do Visual Studio para baixar e instalar as ferramentas Azure Functions Core (linha de comando). Além disso, talvez seja necessário habilitar uma exceção de firewall para que as ferramentas possam manipular solicitações HTTP.

    Observação

    Para obter mais informações sobre depuração, veja Diagnóstico de Durable Functions.

  2. Copie a URL da sua função da saída do Azure Functions runtime.

    Captura da tela do runtime local do Azure.

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

    Captura de tela de uma 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 foi iniciada com êxito. Ainda não exibe o resultado final da orquestração. A resposta inclui algumas URLs úteis.

    Neste ponto, o ponto de interrupção na função de atividade deve ser atingido porque a orquestração começou. 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 seu navegador e execute a solicitação.

    A solicitação consulta a instância de orquestração do status. Você deve ver que a instância foi concluída e inclui as saídas ou resultados do durable functions, 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"
    }
    

    Dica

    Saiba como você pode observar o comportamento de reprodução de um aplicativo Durable Functions por meio de pontos de interrupção.

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

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

Publicar o projeto no Azure

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

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto e selecione Publicar. Em Destino, selecione Azure e, em seguida, selecione Próximo.

    Captura de tela do painel de publicação.

  2. Em Destino específico, selecione Aplicativo de Funções do Azure (Windows). Um aplicativo de funções executado no Windows é criado. Selecione Avançar.

    Captura de tela do painel de publicação que tem 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 do aplicativo de funções.

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

    Configuração Valor Descrição
    Nome Nome globalmente exclusivo Nome que identifica seu novo aplicativo de funções de forma exclusiva. Aceite esse nome ou insira um novo nome. Os caracteres válidos são: a-z, 0-9 e -.
    Assinatura Sua assinatura A assinatura do Azure a utilizar. Aceite esta assinatura ou selecione uma nova na lista suspensa.
    Grupo de recursos Nome do seu grupo de recursos O grupo de recursos no qual você deseja criar o aplicativo de funções. 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ções 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.
    Localidade Local do serviço de aplicativo Selecione um Local em uma região do Azure perto de você ou de outros serviços acessados pelas suas funções.
    Armazenamento do Azure Conta de armazenamento para uso geral Uma conta de armazenamento do Azure é requerida pelo runtime do Functions. Selecione Novo para configurar uma conta de armazenamento para 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 o seu aplicativo de funções. Selecione Novo para criar uma nova instância, em um workspace novo ou em um workspace do Log Analytics existente. 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ções e recursos relacionados no Azure. O status da criação de recursos é mostrado no canto inferior esquerdo da janela.

  6. Na instância do Functions, certifque-se de que a caixa de seleção Executar a partir do arquivo de pacote esteja selecionada. Seu aplicativo de funções é implantado usando a Implantação Zip com o modo Run-From-Package habilitado. A Implantação Zip é o método de implantação recomendado para o seu projeto de funções para melhorar o desempenho.

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

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

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

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

    Captura de tela da mensagem de êxito de publicação.

Testar sua função no Azure

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

    A URL que chama o gatilho HTTP da função durável precisa estar no seguinte formato:

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

  2. Cole o novo URL da solicitação HTTP na barra de endereço do seu navegador. Quando você testou o aplicativo publicado, você pode esperar obter a mesma resposta de status que obteve quando testou localmente.

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

Limpar os recursos

Se já não precisar dos recursos que criou para concluir o arranque rápido, para evitar custos relacionados na sua subscrição do Azure, elimine o grupo de recursos e todos os recursos relacionados.