Creare funzioni permanenti con il portale di Azure

L'estensione Funzioni permanenti di Funzioni di Azure è inclusa nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask. Questa estensione deve essere installata nell'app per le funzioni. Questo articolo illustra come installare questo pacchetto in modo da poter sviluppare funzioni permanenti nel portale di Azure.

Nota

Creare un'app per le funzioni

Per ospitare l'esecuzione di qualsiasi funzione è necessaria un'app per le funzioni. Un'app per le funzioni consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione, il ridimensionamento e la condivisione delle risorse. È possibile creare un'app .NET o JavaScript.

  1. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.

  2. Nella pagina Nuovo, selezionare Calcolo>App per le funzioni.

  3. In Selezionare un'opzione di hosting selezionare Consumo>Selezionareper creare l'app nel piano a consumo predefinito. In questa opzione di hosting serverless si paga solo per l'esecuzione delle funzioni. Il piano Premium offre anche il ridimensionamento dinamico. In caso di esecuzione in un piano di servizio app, è necessario gestire il ridimensionamento dell'app per le funzioni.

  4. Nella pagina Informazioni di base usare le impostazioni dell'app per le funzioni specificate nella tabella seguente:

    Impostazione Valore suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui si crea la nuova app per le funzioni.
    Gruppo di risorse myResourceGroup Nome del nuovo gruppo di risorse in cui si crea l'app per le funzioni. È consigliabile creare un nuovo gruppo di risorse perché esistono limitazioni note durante la creazione di nuove app per le funzioni in un gruppo di risorse esistente.
    Nome dell'app per le funzioni Nome globalmente univoco Nome che identifica la nuova app per le funzioni. I caratteri validi sono a-z (senza distinzione tra maiuscole e minuscole), 0-9 e -.
    Stack di runtime Lingua preferita Scegliere un runtime che supporti il linguaggio di programmazione della funzione preferito. La modifica nel portale è disponibile solo per script JavaScript, PowerShell, Python, TypeScript e C#. La libreria di classi C# e le funzioni Java devono essere sviluppate localmente.
    Versione Numero versione Scegliere la versione del runtime installato.
    Area Area preferita Selezionare un'area vicina o vicina ad altri servizi a cui le funzioni possono accedere.
    Sistema operativo Windows Un sistema operativo è preselezionato in base alla selezione dello stack di runtime, ma è possibile modificare l'impostazione, se necessario. La modifica all'interno del portale è supportata solo in Windows.
  5. Accettare le opzioni predefinite nelle schede rimanenti, incluso il comportamento predefinito della creazione di un nuovo account di archiviazione nella scheda Archiviazione e di una nuova istanza di Application Insight nella scheda Monitoraggio. È anche possibile scegliere di usare un account di archiviazione esistente o un'istanza di Application Insights.

  6. Selezionare Rivedi e crea per esaminare la configurazione dell'app scelta e quindi selezionare Crea per effettuare il provisioning e distribuire l'app per le funzioni.

  7. Selezionare l'icona Notifiche nell'angolo superiore destro del portale e attendere che venga visualizzato il messaggio La distribuzione è riuscita.

  8. Selezionare Vai alla risorsa per visualizzare la nuova app per le funzioni. È anche possibile selezionare Aggiungi al dashboard. In questo modo è più facile tornare in questa risorsa di app per le funzioni dal dashboard.

    Screenshot della notifica di distribuzione.

Per impostazione predefinita, l'app per le funzioni creata usa la versione 2.x del runtime di Funzioni di Azure. L'estensione Durable Functions funziona in entrambe le versioni 1.x e 2.x del runtime di Funzioni di Azure in C# e nella versione 2.x in JavaScript. Tuttavia, i modelli sono disponibili solo se destinati alla versione 2.x del runtime, indipendentemente dal linguaggio scelto.

Installare il pacchetto npm di Durable Functions (solo JavaScript)

Se si stanno creando funzioni Durable Functions in JavaScript, è necessario installare il durable-functionspacchetto npm:

  1. Dalla pagina dell'app per le funzioni selezionare Strumenti avanzati in Strumenti di sviluppo nel riquadro a sinistra.

    Funzionalità della piattaforma Funzioni, scegliere Kudu

  2. Nella pagina Strumenti avanzati selezionare Vai.

  3. Nella console Kudu selezionare Debug console (Console di debug) e quindi CMD.

    Console di debug Kudu

  4. Viene visualizzata la struttura della directory di file dell'app per le funzioni. Passa alla cartella site/wwwroot. Da qui, è possibile caricare un file package.json trascinandolo e rilasciandolo nella finestra della directory di file. Un esempio di package.json è riportato di seguito:

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

    Caricamento in Kudu di package.json

  5. Dopo aver caricato il file package.json, eseguire il comando npm install nella console di esecuzione remota Kudu.

    Esecuzione npm install in Kudu

Creare una funzione di agente di orchestrazione

  1. Nell'app per le funzioni selezionare Funzioni nel riquadro a sinistra e quindi Aggiungi nel menu superiore.

  2. Nel campo di ricerca della pagina Nuova funzione immettere durable e quindi scegliere il modello Durable Functions Http Starter.

    Selezionare Durable Functions Http Starter

  3. Come nome di Nuova funzione immettere HttpStart e quindi selezionare Crea funzione.

    La funzione creata viene usata per avviare l'orchestrazione.

  4. Creare un'altra funzione nell'app per le funzioni, questa volta usando il modello Durable Functions Orchestrator. Denominare la nuova funzione di orchestrazione HelloSequence.

  5. Creare una terza funzione denominata Hello usando il modello Durable Functions Activity.

Testare l'orchestrazione della funzione permanente

  1. Tornare alla funzione HttpStart, scegliere Recupera URL della funzione e selezionare l'icona Copia negli Appunti per copiare l'URL. Usare questo URL per avviare la funzione HelloSequence.

  2. Usare uno strumento HTTP come Postman o cURL per inviare una richiesta POST all'URL copiato. L'esempio seguente è un comando cURL che invia una richiesta POST alla funzione permanente:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    In questo esempio, {your-function-app-name} è il dominio che è il nome dell'app per le funzioni ed {functionName} è la funzione dell'agente di orchestrazione HelloSequence . Il messaggio di risposta contiene un set di endpoint URI che è possibile usare per monitorare e gestire l'esecuzione, con un aspetto simile al seguente:

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Chiamando l'URI dell'endpoint statusQueryGetUri si visualizza lo stato corrente della funzione permanente, che potrebbe essere simile al seguente esempio:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Continuare a chiamare l'endpoint statusQueryGetUri fino a quando lo stato diventa Completed per visualizzare una risposta simile all'esempio seguente:

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

La prima funzione permanente è ora attiva e in esecuzione in Azure.

Passaggi successivi