Criar sua primeira função durável em C#Create your first durable function in C#

Durable Functions são uma extensão do Azure Functions que permitem que você escreva funções com estado em um ambiente sem servidor.Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless environment. A extensão gerencia estado, pontos de verificação e reinicializações para você.The extension manages state, checkpoints, and restarts for you.

Neste artigo, você aprenderá a usar o Visual Studio 2019 para criar e testar localmente uma função durável "olá, mundo".In this article, you learn how to use the Visual Studio 2019 to locally create and test a "hello world" durable function. Essa função orquestrará e encadeará chamadas para outras funções.This function orchestrates and chains-together calls to other functions. Em seguida, você publicará o código de função no Azure.You then publish the function code to Azure. Essas ferramentas estão disponíveis como parte da carga de trabalho de desenvolvimento do Azure no Visual Studio 2019.These tools are available as part of the Azure development workload in Visual Studio 2019.

Como executar funções duráveis no Azure

Pré-requisitosPrerequisites

Para concluir este tutorial:To complete this tutorial:

  • Instalar o Visual Studio 2019.Install Visual Studio 2019. Garanta que a carga de trabalho de desenvolvimento do Azure também seja instalada.Make sure that the Azure development workload is also installed. O Visual Studio 2017 também dá suporte ao desenvolvimento de Durable Functions, mas a interface do usuário e as etapas são diferentes.Visual Studio 2017 also supports Durable Functions development, but the UI and steps differ.

  • Verifique se você tem o Emulador de Armazenamento do Azure instalado e em execução.Verify you have the Azure Storage Emulator installed and running.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Crie um projeto de aplicativo de funçõesCreate a function app project

O modelo do Azure Functions cria um projeto que pode ser publicado em um aplicativo de funções no Azure.The Azure Functions template creates a project that can be published to a function app in Azure. Um aplicativo de funções permite a você agrupar funções como uma unidade lógica para o gerenciamento, implantação e compartilhamento de recursos.A function app lets you group functions as a logical unit for management, deployment, and sharing of resources.

  1. No Visual Studio, selecione Novo > Projeto no menu Arquivo.In Visual Studio, select New > Project from the File menu.

  2. Na caixa de diálogo Adicionar um projeto, pesquise por functions, escolha o modelo do Azure Functions e selecione Avançar.In the Add a new project dialog, search for functions, choose the Azure Functions template, and select Next.

    Diálogo Novo projeto para criar uma função no Visual Studio

  3. Digite um Nome do projeto e selecione OK.Type a Project name for your project, and select OK. O nome do projeto deve ser válido como um namespace do C#, então não use hífens, sublinhados ou outros caracteres não alfanuméricos.The project name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. Em Criar um Aplicativo do Azure Functions, use as configurações especificadas na tabela após a imagem.In Create a new Azure Functions Application, use the settings specified in the table that follows the image.

    Caixa de diálogo Criar um Aplicativo do Azure Functions no Visual Studio

    ConfiguraçãoSetting Valor sugeridoSuggested value DESCRIÇÃODescription
    VersãoVersion Azure Functions 2.xAzure Functions 2.x
    (.NET Core)(.NET Core)
    Cria um projeto de função que usa o tempo de execução versão 2.x do Azure Functions, que dá suporte ao .NET Core.Creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. O Azure Functions 1.x dá suporte ao .NET Framework.Azure Functions 1.x supports the .NET Framework. Para obter mais informações, consulte Como direcionar para versões de tempo de execução do Azure Functions.For more information, see How to target Azure Functions runtime version.
    ModeloTemplate VazioEmpty Cria um aplicativo de funções vazio.Creates an empty function app.
    Conta de armazenamentoStorage account Emulador de ArmazenamentoStorage Emulator Uma conta de armazenamento é necessária para o gerenciamento de estado de uma função durável.A storage account is required for durable function state management.
  5. Selecione Criar para criar um projeto de função vazio.Select Create to create an empty function project. Este projeto tem os arquivos de configuração básicos necessários para executar suas funções.This project has the basic configuration files needed to run your functions.

Adicionar funções ao aplicativoAdd functions to the app

As etapas a seguir usam um modelo para criar o código da durable function no projeto.The following steps use a template to create the durable function code in your project.

  1. Clique com o botão direito do mouse no Visual Studio e escolha Adicionar > Novo Azure Function.Right-click the project in Visual Studio and select Add > New Azure Function.

    Adicionar uma nova função

  2. Verifique se Azure Function está selecionado no menu de adição, digite um nome para o arquivo C# e selecione Adicionar.Verify Azure Function is selected from the add menu, type a name for your C# file, and then select Add.

  3. Escolha o modelo Orquestração de Durable Functions e selecione OKSelect the Durable Functions Orchestration template and then select Ok

    Escolher o modelo durável

Uma nova durable function será adicionada ao aplicativo.A new durable function is added to the app. Abra o novo arquivo .cs para exibir o conteúdo.Open the new .cs file to view the contents. Essa durable function é um exemplo simples de encadeamento de funções com os seguintes métodos:This durable function is a simple function chaining example with the following methods:

MétodoMethod FunctionNameFunctionName DESCRIÇÃODescription
RunOrchestrator <file-name> Gerencia a orquestração durável.Manages the durable orchestration. Nesse caso, a orquestração é iniciada, cria uma lista e adiciona o resultado de três chamadas de função à lista.In this case, the orchestration starts, creates a list, and adds the result of three functions calls to the list. Quando as três chamadas de função são concluídas, ela retorna a lista.When the three function calls are complete, it returns the list.
SayHello <file-name>_Hello A função retorna uma saudação.The function returns a hello. Essa é a função que contém a lógica de negócios que está sendo orquestrada.This is the function that contains the business logic that is being orchestrated.
HttpStart <file-name>_HttpStart Uma função disparada por HTTP que inicia uma instância da orquestração e retorna uma resposta de status de verificação.An HTTP-triggered function that starts an instance of the orchestration and returns a check status response.

Agora que você criou seu projeto de função e uma função durável, poderá testá-la em seu computador local.Now that you've created your function project and a durable function, you can test it on your local computer.

Testar a função localmenteTest the function locally

As Ferramentas Principais do Azure Functions permitem executar um projeto do Azure Functions no seu computador de desenvolvimento local.Azure Functions Core Tools lets you run an Azure Functions project on your local development computer. Você precisa instalar essas ferramentas na primeira vez em que inicia uma função no Visual Studio.You are prompted to install these tools the first time you start a function from Visual Studio.

  1. Para testar sua função, pressione F5.To test your function, press F5. Se solicitado, aceite a solicitação do Visual Studio para baixar e instalar as ferramentas principais (CLI) do Azure Functions.If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Você também precisará habilitar a exceção de firewall de forma que as ferramentas possam lidar com solicitações HTTP.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

  2. Copie a URL da sua função da saída de tempo de execução do Azure Functions.Copy the URL of your function from the Azure Functions runtime output.

    Tempo de execução local do Azure

  3. Cole a URL da solicitação HTTP na barra de endereços do navegador e execute a solicitação.Paste the URL for the HTTP request into your browser's address bar and execute the request. O exemplo a seguir mostra a resposta no navegador à solicitação GET local retornada pela função:The following shows the response in the browser to the local GET request returned by the function:

    Resposta da função localhost no navegador

    A resposta é o resultado inicial da função HTTP informando que a orquestração durável foi iniciada com êxito.The response is the initial result from the HTTP function letting us know the durable orchestration has started successfully. A resposta ainda não é o resultado final da orquestração.It is not yet the end result of the orchestration. A resposta inclui algumas URLs úteis.The response includes a few useful URLs. Por enquanto, vamos consultar o status da orquestração.For now, let's query the status of the orchestration.

  4. Copie o valor da URL para statusQueryGetUri, cole-o na barra de endereços do navegador e execute a solicitação.Copy the URL value for statusQueryGetUri and pasting it in the browser's address bar and execute the request.

    A solicitação consultará a instância de orquestração do status.The request will query the orchestration instance for the status. Uma resposta eventual deverá ser exibida e será semelhante ao seguinte.You should get an eventual response that looks like the following. Isso mostra que a instância foi concluída e inclui os resultados ou saídas da função durável.This shows us the instance has completed, and includes the outputs or results of the durable function.

    {
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2018-11-08T07:07:40Z",
        "lastUpdatedTime": "2018-11-08T07:07:52Z"
    }
    
  5. Para interromper a depuração, pressione Shift + F5.To stop debugging, press Shift + F5.

Após verificar se a função foi executada corretamente no computador local, é hora de publicar o projeto no Azure.After you have verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

Publicar o projeto no AzurePublish the project to Azure

Você deve ter um aplicativo de funções em sua assinatura do Azure antes de publicar seu projeto.You must have a function app in your Azure subscription before you can publish your project. Você pode criar um aplicativo de funções diretamente no Visual Studio.You can create a function app right from Visual Studio.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto e selecione Publicar.In Solution Explorer, right-click the project and select Publish.

  2. Na caixa de diálogo Selecione um destino de publicação, use as opções publicar, conforme especificado na tabela embaixo da imagem:In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    Escolher um destino de publicação

    OpçãoOption DESCRIÇÃODescription
    Plano de consumo do Azure FunctionsAzure Functions Consumption plan 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.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. Outros planos de hospedagem incorrem em custos mais altos.Other hosting plans incur higher costs. Para saber mais, confira Escala e hospedagem do Azure Functions.To learn more, see Azure Functions scale and hosting.
    Criar novoCreate new Um novo aplicativo de funções com recursos relacionados é criado no Azure.A new function app, with related resources, is created in Azure. Quando você escolhe selecionar existente, todos os arquivos no aplicativo de funções existente no Azure são substituídos pelos arquivos do projeto local.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. Use essa opção somente quando republicar atualizações para um aplicativo de funções existente.Only use this option when republishing updates to an existing function app.
    Executar com base no arquivo de pacoteRun from package file Seu aplicativo de funções é implantado usando a Implantação de Zip com o modo Run-From-Package habilitado.Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Essa é a maneira recomendada de executar suas funções, que resulta em um melhor desempenho.This is the recommended way of running your functions, which results in better performance. Quando não estiver usando essa opção, verifique se você interrompeu a execução local do projeto de aplicativo de funções antes de publicar no Azure.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. Selecione Publicar.Select Publish. Se você ainda não entrou em sua conta do Azure do Visual Studio, selecione Entrar.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Também é possível criar uma conta gratuita do Azure.You can also create a free Azure account.

  4. No Serviço de Aplicativo: Criar, use as configurações de Hospedagem conforme especificadas na tabela embaixo da imagem:In the App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    Criar caixa de diálogo do Serviço de Aplicativo

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    NomeName Nome globalmente exclusivoGlobally unique name Nome que identifica seu novo aplicativo de funções de forma exclusiva.Name that uniquely identifies your new function app. Os caracteres válidos são a-z, 0-9 e -.Valid characters are a-z, 0-9, and -.
    AssinaturaSubscription Escolha sua assinaturaChoose your subscription A assinatura do Azure a utilizar.The Azure subscription to use.
    Grupo de RecursosResource Group myResourceGroupmyResourceGroup Nome do grupo de recursos no qual criar o seu aplicativo de funções.Name of the resource group in which to create your function app. Escolha Novo para criar um novo grupo de recursos.Choose New to create a new resource group.
    Plano de hospedagemHosting Plan Plano de consumoConsumption plan Escolha o Consumo em Tamanho após selecionar Novo para criar um plano sem servidor.Make sure to choose the Consumption under Size after you select New to create a serverless plan. Também, escolha um Local em uma região perto de você ou perto de outros serviços que suas funções acessam.Also, choose a Location in a region near you or near other services your functions access. Quando você executa em um plano diferente de Consumo, deve gerenciar o dimensionamento de seu aplicativo de funções.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Armazenamento do AzureAzure Storage Conta de armazenamento para uso geralGeneral-purpose storage account Uma conta de armazenamento do Azure é necessária para o tempo de execução de funções.An Azure storage account is required by the Functions runtime. Selecione Novo para criar uma conta de armazenamento para uso geral.Select New to create a general-purpose storage account. Você também pode usar uma conta existente que atenda aos requisitos da conta de armazenamento.You can also use an existing account that meets the storage account requirements.
  5. Selecione Criar para criar um aplicativo de funções e recursos relacionados no Azure com essas configurações e implantar seu código de projeto de função.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. Após a conclusão da implantação, anote o valor da URL do Site, que é o endereço do seu aplicativo de funções no Azure.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Publicar mensagem de êxito

Testar sua função no AzureTest your function in Azure

  1. Copie a URL base do aplicativo de funções da página de perfil de publicação.Copy the base URL of the function app from the Publish profile page. Substitua a parte localhost:port da URL que você usou ao testar a função localmente pela nova URL base.Replace the localhost:port portion of the URL you used when testing the function locally with the new base URL.

    A URL que chama a função HTTP durável deve estar no seguinte formato:The URL that calls your durable function HTTP trigger should be in the following format:

     http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart
    
  2. Cole essa nova URL para a solicitação HTTP na barra de endereços do navegador.Paste this new URL for the HTTP request into your browser's address bar. Ao usar o aplicativo publicado, você deve obter a mesma resposta de status como antes.You should get the same status response as before when using the published app.

Próximas etapasNext steps

Você usou o Visual Studio Code para criar e publicar um aplicativo de funções C# durável.You have used Visual Studio to create and publish a C# durable function app.