Criar Durable Functions usando o portal do AzureCreate Durable Functions using the Azure portal

A extensão Funções Duráveis do Azure Functions é fornecida no pacote de NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask.The Durable Functions extension for Azure Functions is provided in the NuGet package Microsoft.Azure.WebJobs.Extensions.DurableTask. Esta extensão deve ser instalada em seu aplicativo de função.This extension must be installed in your function app. Este artigo mostra como instalar esse pacote para que você possa desenvolver funções duráveis no portal do Azure.This article shows how to install this package so that you can develop durable functions in the Azure portal.

Observação

Criar um aplicativo de funçõesCreate a function app

Você deve ter um aplicativo de função para hospedar a execução de qualquer função.You must have a function app to host the execution of any function. Um aplicativo de função permite agrupar suas funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos.A function app lets you group your functions as a logic unit for easier management, deployment, and sharing of resources. Você pode criar um aplicativo .NET ou JavaScript.You can create a .NET or JavaScript app.

  1. Selecione o botão Criar um recurso no canto superior esquerdo do portal do Azure e selecione Computação > Aplicativo de funções.Select the Create a resource button found on the upper left-hand corner of the Azure portal, then select Compute > Function App.

    Criar um aplicativo de funções no portal do Azure

  2. Use as configurações do aplicativo de funções especificadas na tabela abaixo da imagem.Use the function app settings as specified in the table below the image.

    Definir novas configurações do aplicativo de funções

    ConfiguraçãoSetting Valor sugeridoSuggested value DESCRIÇÃODescription
    Nome do aplicativoApp name Nome globalmente exclusivoGlobally unique name Nome que identifica seu novo aplicativo de funções.Name that 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 Sua assinaturaYour subscription A assinatura na qual este novo aplicativo de funções será criado.The subscription under which this new function app is created.
    Grupo de RecursosResource Group myResourceGroupmyResourceGroup Nome do novo grupo de recursos no qual criar o seu aplicativo de funções.Name for the new resource group in which to create your function app.
    SOOS WindowsWindows As opções de linguagem disponíveis dependem do sistema operacional do aplicativo de funções.The language options available depend on the OS of the function app. Por exemplo, o Python requer o Linux.For example, Python requires Linux.
    Plano de hospedagemHosting plan Plano de consumoConsumption plan Plano de hospedagem que define como os recursos são alocados para seu aplicativo de funções.Hosting plan that defines how resources are allocated to your function app. No Plano de Consumo padrão, os recursos são adicionados dinamicamente conforme exigido por suas funções.In the default Consumption Plan, resources are added dynamically as required by your functions. Nesta hospedagem sem servidor, você só paga pelo tempo durante o qual suas funções são executadas.In this serverless hosting, you only pay for the time your functions run. Quando você executa em um Plano do Serviço de Aplicativo, deve gerenciar o dimensionamento do aplicativo de funções.When you run in an App Service plan, you must manage the scaling of your function app.
    LocalidadeLocation Europa OcidentalWest Europe Escolha uma região perto de você ou perto de outros serviços que suas funções acessam.Choose a region near you or near other services your functions access.
    Pilha de tempo de execuçãoRuntime stack Linguagem preferencialPreferred language Escolha um tempo de execução compatível com sua linguagem de programação de funções favorita.Choose a runtime that supports your favorite function programming language. Escolha .NET para funções C# e F#.Choose .NET for C# and F# functions.
    ArmazenamentoStorage Nome globalmente exclusivoGlobally unique name Crie uma conta de armazenamento usada pelo seu aplicativo de funções.Create a storage account used by your function app. Os nomes da conta de armazenamento devem ter entre 3 e 24 caracteres e podem conter apenas números e letras minúsculas.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only. Você também pode usar uma conta existente, mas ela precisa atender aos requisitos da conta de armazenamento.You can also use an existing account, which must meets the storage account requirements.
    Application InsightsApplication Insights PadrãoDefault Cria um recurso do Application Insights do mesmo nome do aplicativo na região com suporte mais próxima.Creates an Application Insights resource of the same App name in the nearest supported region. Ao expandir essa configuração, você pode alterar o Novo nome do recurso ou escolher um Local diferente em uma geografia do Azure onde deseja armazenar seus dados.By expanding this setting, you can change the New resource name or choose a different Location in an Azure geography where you want to store your data.
  3. Selecione Criar para provisionar e implantar o aplicativo de funções.Select Create to provision and deploy the function app.

  4. Selecione o ícone da Notificação no canto superior direito do portal e veja se a mensagem Implantação concluída com êxito é exibida.Select the Notification icon in the upper-right corner of the portal and watch for the Deployment succeeded message.

    Definir novas configurações do aplicativo de funções

  5. Selecione Ir para recursos para exibir o novo aplicativo de funções.Select Go to resource to view your new function app. Você também pode selecionar Fixar no painel.You can also select Pin to dashboard. A fixação torna mais fácil retornar a esse recurso de aplicativo de função no seu painel.Pinning makes it easier to return to this function app resource from your dashboard.

Por padrão, o aplicativo de função criado usa a versão 2.x do Azure Functions Runtime.By default, the function app created uses version 2.x of the Azure Functions runtime. A extensão Durable Functions funciona nas duas versões 1.x e 2.x do Azure Functions Runtime em C# e versão 2.x no JavaScript.The Durable Functions extension works on both versions 1.x and 2.x of the Azure Functions runtime in C#, and version 2.x in JavaScript. No entanto, os modelos só estão disponíveis ao segmentar a versão 2.x do tempo de execução independentemente da linguagem escolhida.However, templates are only available when targeting version 2.x of the runtime regardless of the chosen language.

Instalar o pacote npm de Durable Functions (apenas JavaScript)Install the durable-functions npm package (JavaScript only)

Se você estiver criando Durable Functions do JavaScript, precisará instalar o pacote npm durable-functions.If you are creating JavaScript Durable Functions, you will need to install the durable-functions npm package.

  1. Selecione o nome do seu aplicativo de funções, seguido pelos Recursos da Plataforma e Ferramentas avançadas (Kudu) .Select your function app's name, followed by Platform Features, then Advanced tools (Kudu).

    Recursos da plataforma funções, escolha Kudu

  2. Dentro do console do Kudu, selecione Console de depuração e CMD.Inside the Kudu console, select Debug console then CMD.

    Console de depuração do Kudu

  3. Sua estrutura de diretório do arquivo do aplicativo de funções deve ser exibida.Your function app's file directory structure should display. Navegue até a pasta site/wwwroot.Navigate to the site/wwwroot folder. Dela, você pode carregar um arquivo package.json arrastando e soltando-o na janela do diretório do arquivo.From there, you can upload a package.json file by dragging and dropping it into the file directory window. Há um exemplo package.json abaixo:A sample package.json is below:

    {
      "dependencies": {
        "durable-functions": "^1.1.2"
      }
    }
    

    Carregar o pacote do package.json do Kudu

  4. Após seu package.json ser carregado, execute o comando npm install do Console de Execução Remota do Kudu.Once your package.json is uploaded, run the npm install command from the Kudu Remote Execution Console.

    Executar a instalação do npm do Kudu

Crie uma função de orquestradorCreate an orchestrator function

  1. Expanda seu aplicativo de funções e clique no botão + ao lado de Functions.Expand your function app and click the + button next to Functions. Se essa for a primeira função em seu aplicativo de funções, selecione No portal e depois Continuar.If this is the first function in your function app, select In-portal then Continue. Caso contrário, vá para a etapa três.Otherwise, go to step three.

    Página de início rápido de funções no portal do Azure

  2. Escolha Mais modelos e, em seguida, Concluir e exibir modelos.Choose More templates then Finish and view templates.

    Início Rápido do Functions, escolher mais modelos

  3. No campo de pesquisa, digite durable e escolha o modelo Durable Functions HTTP starter.In the search field, type durable and then choose the Durable Functions HTTP starter template.

  4. Quando solicitado, selecione Instalar para instalar a extensão Azure DurableTask em quaisquer dependências do aplicativo de função.When prompted, select Install to install the Azure DurableTask extension any dependencies in the function app. Você só precisa instalar a extensão uma vez para obter um aplicativo de função.You only need to install the extension once for a give function app. Após a instalação ser bem-sucedida, selecione Continuar.After installation succeeds, select Continue.

    Instalar extensões de associação

  5. Depois de concluir a instalação, nomeie a nova função HttpStart e escolha Criar.After the installation completes, name the new function HttpStart and choose Create. A função criada é usada para iniciar a orquestração.The function created is used to start the orchestration.

  6. Criar outra função no aplicativo de funções, desta vez usando o modelo Durable Functions.Create another function in the function app, this time by using the Durable Functions Orchestrator template. Nomeie sua nova função de orquestração HelloSequence.Name your new orchestration function HelloSequence.

  7. Crie uma terceira função denominada Hello usando o modelo Durable Functions Activity.Create a third function named Hello by using the Durable Functions Activity template.

Teste a orquestração de função durávelTest the durable function orchestration

  1. Volte para a função HttpStart, escolha </> Obtenha o URL da função e Copie o URL.Go back to the HttpStart function, choose </> Get function URL and Copy the URL. Use essa URL para iniciar o HelloSequence função.You use this URL to start the HelloSequence function.

  2. Use uma ferramenta HTTP, como Postman ou cURL, para enviar uma solicitação POST ao URL que você copiou.Use an HTTP tool like Postman or cURL to send a POST request to the URL that you copied. O exemplo a seguir é um comando cURL que envia uma solicitação POST para a função durável:The following example is a cURL command that sends a POST request to the durable function:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/HelloSequence
    

    Neste exemplo, {your-function-app-name} é o domínio que é o nome do seu aplicativo de função.In this example, {your-function-app-name} is the domain that is the name of your function app. A mensagem de resposta contém um conjunto de nós de extremidade do URI que você pode usar para monitorar e gerenciar a execução, que se parece com o exemplo a seguir:The response message contains a set of URI endpoints that you can use to monitor and manage the execution, which looks like the following example:

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Chame o statusQueryGetUri endpoint URI e você verá o status atual da função durável, que pode ser semelhante a este exemplo:Call the statusQueryGetUri endpoint URI and you see the current status of the durable function, which might look like this example:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Continue chamando o endpoint statusQueryGetUri até que o status seja alterado para Completed e você veja uma resposta como o exemplo a seguir:Continue calling the statusQueryGetUri endpoint until the status changes to Completed, and you see a response like the following example:

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

A primeira função durável está agora em execução no Azure.Your first durable function is now up and running in Azure.

Próximas etapasNext steps