Compartilhar via


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

Use a extensão Durable Functions, um recurso do Azure Functions, para gravar funções com estado em um ambiente sem servidor. A 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:

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita 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:

    Rápido Ação Descrição
    Selecione uma linguagem para o seu projeto de aplicativo de funções Selecione C#. Cria um projeto local do Functions em C#.
    Selecionar 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.
    Escolher 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 para a 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 os tipos e recursos do Durable Functions ou este código de exemplo em C# para 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

O Azure Functions Core Tools oferece 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. Ela 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 da 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 tiver feito login, na Barra de atividades, selecione o ícone do Azure. Em seguida, em Recursos, selecione Entrar no Azure.

    Captura de tela da janela Fazer login no 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 no plano de Consumo Flex juntamente com os 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ções 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:

    Rápido Ação
    Selecionar 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 novo nome do aplicativo de funções Insira um nome global exclusivo que seja válido em um caminho de URL. O nome que você digitar será validado para garantir que seja exclusivo no Azure Functions.
    Selecione uma localização para novos recursos Selecione uma região do Azure. Para obter um melhor desempenho, escolha uma região perto de você. Somente as regiões compatíveis com os planos de Consumo Flex são exibidas.
    Selecionar uma pilha de runtime Selecione a versão da linguagem que você executa localmente no momento.
    Selecionar tipo de autenticação de recurso Selecione a identidade gerenciada, que é a opção mais segura para se conectar à conta de armazenamento de host padrão.

    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.
    • 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 conta de Armazenamento do Azure padrão, que é usada pelo host do Functions para manter o estado e outras informações sobre 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 identidade gerenciada atribuída pelo usuário adicionada à função Colaborador de Dados de Blobs de Armazenamento na nova conta de armazenamento de host padrão.

    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. Se você quiser 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 a implantação ser concluída, selecione Ver a saída para ver os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você não viu a notificação, selecione o ícone do 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 a nova 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 não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados na sua assinatura do Azure, exclua 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.

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita 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

O Azure Functions Core Tools oferece 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. Ela informa que a orquestração durável foi iniciada com sucesso. Ela 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 da 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 projeto e selecione Publicar.

  2. Na página Publicar , faça as seguintes seleções:

    • No Destino, selecione o Azure e, em seguida, selecione Avançar.
    • No destino específico, selecione Aplicativo de Funções do Azure e selecione Avançar.
    • Na instância do Functions, selecione Criar novo.

    Captura de tela da página Publicar. Na seção da instância do Functions, um grupo de recursos fica visível e Criar novo está realçado.

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

    Configuração Valor Descrição
    Nome Um nome globalmente exclusivo O nome deve identificar exclusivamente seu novo aplicativo de funções. Aceite o nome sugerido ou insira um novo nome. Os seguintes caracteres são válidos: a-z, 0-9e -.
    Nome da assinatura O nome da sua assinatura O aplicativo de funções é criado em uma assinatura do Azure. Aceite a assinatura padrão ou selecione uma diferente na lista.
    Grupo de recursos O nome do grupo de recursos O aplicativo de funções é criado em um grupo de recursos. Selecione Novo para criar um novo grupo de recursos. Você também pode selecionar um grupo de recursos existente na lista.
    Tipo de plano Consumo flexível Quando você publica seu projeto em um aplicativo de funções executado em um plano de Consumo Flex, você pode pagar apenas pelas execuções do aplicativo de funções. Outros planos de hospedagem podem incorrer em custos mais altos.
    IMPORTANTE:
    Ao criar um plano de Consumo Flex, primeiro você deve selecionar o Plano de Serviço de Aplicativos e, em seguida, reelecionar o Consumo Flex para resolver um problema com a caixa de diálogo.
    Sistema operacional Linux O plano de Consumo Flex atualmente requer Linux.
    Localidade O local do serviço de aplicativo Selecione um local em uma região do Azure compatível com o plano de Consumo Flex. Quando uma região não suportada é selecionada, o botão Criar fica desativado.
    Tamanho da memória da instância 2048 O tamanho da memória das instâncias da máquina virtual em que o aplicativo é executado é exclusivo do plano de Consumo Flex.
    Armazenamento do Azure Uma conta de armazenamento de uso geral O runtime do Functions requer uma conta de Armazenamento. Selecione Novo para configurar uma conta de armazenamento para uso geral. Você também pode usar uma conta existente que atenda aos requisitos da conta de armazenamento.
    Application Insights Uma instância do Application Insights Você deve ativar a integração do Application Insights para 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 usar uma instância existente.

    Captura de tela da caixa de diálogo Criar novo aplicativo de funções. Campos para o nome, assinatura, grupo de recursos, plano e outras configurações são preenchidos.

  4. 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.

  5. Selecione Concluir. A janela Progresso da Criação do Perfil de Publicação é exibida. Quando o perfil for criado, selecione Fechar.

  6. Na página publicar perfil, selecione Publicar para implantar o pacote que contém 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 página de perfil de publicação.

  7. Na página publicar perfil, vá para a seção Hospedagem . Selecione as reticências (...) e, em seguida, 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 página de perfil de publicação. Na seção Hospedagem, o menu de atalho de reticências está aberto e Abrir no portal do Azure está realçado.

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 a nova 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 não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados na sua assinatura do Azure, exclua o grupo de recursos e todos os recursos relacionados.