Guida introduttiva: Creare un'app Durable Functions per C#

Usare Durable Functions, una funzionalità di Funzioni di Azure, per scrivere funzioni con stato in un ambiente serverless. Durable Functions gestisce lo stato, i checkpoint e i riavvii nell'applicazione.

Analogamente a Funzioni di Azure, Durable Functions supporta due modelli di processo per le funzioni della libreria di classi .NET. Per altre informazioni sui due processi, vedere Differenze tra un processo in-process e un processo di lavoro isolato in Funzioni di Azure per .NET.

In questa guida introduttiva viene usato Visual Studio Code per creare e testare in locale un'app Durable Functions "hello world". Questa funzione orchestra e concatena le chiamate ad altre funzioni. Successivamente, il codice della funzione verrà pubblicato in Azure. Gli strumenti usati sono disponibili tramite l'estensione Funzioni di Azure di Visual Studio Code.

Screenshot che mostra un'app Durable Functions in Visual Studio Code.

Prerequisiti

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Creare un progetto di Funzioni di Azure

In Visual Studio Code creare un progetto di Funzioni di Azure in locale.

  1. Nel menu Visualizza selezionare il riquadro comandi (o selezionare CTRL+MAIUSC+P).

  2. Al prompt (>), immettere e selezionare Funzioni di Azure: Crea nuovo progetto.

    Screenshot che mostra il comando per creare un progetto di Funzioni.

  3. Selezionare Sfoglia. Nella finestra di dialogo Seleziona cartella passare alla cartella da usare per il progetto, quindi scegliere Seleziona.

  4. Ai prompt selezionare o immettere i valori seguenti:

    Richiesta Azione Descrizione
    Selezionare un linguaggio per il progetto di app per le funzioni Selezionare C#. Creare un progetto Funzioni in C# in locale.
    Selezionare una versione Selezionare Funzioni di Azure v4. Questa opzione è visualizzata solo quando Core Tools non è già installato. In questo caso, Core Tools viene installato la prima volta che si esegue l'app.
    Selezionare un runtime .NET Selezionare .NET 8.0 isolato. Crea un progetto di Funzioni che supporta .NET 8 in esecuzione in un processo di lavoro isolato e il runtime di Funzioni di Azure 4.0. Per altre informazioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.
    Selezionare un modello per la prima funzione del progetto Selezionare Orchestrazione di Durable Functions. Crea un'orchestrazione di Durable Functions.
    Scegliere un tipo di archiviazione durevole Selezionare Archiviazione di Azure. Provider di archiviazione predefinito per Durable Functions. Per altre informazioni, vedere Provider di archiviazione di Durable Functions.
    Specificare un nome di funzione Immettere HelloOrchestration. Nome della funzione di orchestrazione.
    Specificare uno spazio dei nomi Immettere Company.Function. Spazio dei nomi per la classe generata.
    Selezionare come si vuole aprire il progetto Selezionare Apri nella finestra corrente. Apre Visual Studio Code nella cartella selezionata.

Visual Studio Code installa Azure Functions Core Tools se è necessario per creare un progetto. Crea inoltre un progetto di app per le funzioni in una cartella. Questo progetto contiene i file di configurazione host.json e local.settings.json.

Un altro file, HelloOrchestration.cs, contiene i blocchi predefiniti di base di un'app Durable Functions:

metodo Descrizione
HelloOrchestration Definisce l'orchestrazione dell'app Durable Functions. In questo caso, l'orchestrazione viene avviata, crea un elenco e quindi aggiunge il risultato di tre chiamate di funzione all'elenco. Al termine delle tre chiamate di funzione, viene restituito l'elenco.
SayHello Un'app per le funzioni semplice che restituisce hello. Questa funzione contiene la logica di business orchestrata.
HelloOrchestration_HttpStart Una funzione attivata da HTTP che avvia un'istanza dell'orchestrazione e restituisce una risposta di controllo dello stato.

Per altre informazioni su queste funzioni, vedere Tipi e funzionalità di Durable Functions.

Configurare lo spazio di archiviazione

È possibile usare Azurite, un emulatore per Archiviazione di Azure, per testare la funzione in locale. In local.settings.jsonimpostare il valore per AzureWebJobsStorage su UseDevelopmentStorage=true come nell'esempio seguente:

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

Per installare e avviare l'esecuzione dell'estensione Azurite in Visual Studio Code, nel riquadro comandi immettere Azurite: Start e selezionare INVIO.

È possibile usare altre opzioni di archiviazione per l'app Durable Functions. Per altre informazioni sulle opzioni di archiviazione e sui vantaggi, vedere Provider di archiviazione di Durable Functions.

Testare la funzione in locale

Azure Functions Core Tools offre la possibilità di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti al primo avvio di una funzione in Visual Studio Code.

  1. In Visual Studio Code impostare un punto di interruzione nel codice della funzione dell'attività SayHello e quindi selezionare F5 per avviare il progetto dell'app per le funzioni. Il pannello Terminale visualizza l'output restituito da Core Tools.

    Nota

    Per altre informazioni sul debug, vedere Diagnostica di Durable Functions.

    Se viene visualizzato il messaggio Nessuna funzione di processo trovata, aggiornare l'installazione di Azure Functions Core Tools alla versione più recente.

  2. Nel pannello Terminale copiare l'endpoint dell'URL della funzione attivata da HTTP.

    Screenshot della finestra di output locale di Azure.

  3. Usare uno strumento di test HTTP per inviare una richiesta HTTP POST all'endpoint URL.

    La risposta è il risultato iniziale della funzione HTTP. Informa che l'orchestrazione dell’app Durable Functions è stata avviata correttamente. Non visualizza ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili.

    A questo punto, è necessario che venga raggiunto il punto di interruzione nella funzione dell'attività perché l’orchestrazione possa avviarsi. Eseguire le operazioni richieste per ottenere una risposta sullo stato dell'orchestrazione.

  4. Copiare il valore dell'URL per statusQueryGetUri, incollarlo nella barra degli indirizzi del browser ed eseguire la richiesta. In alternativa, è anche possibile continuare a usare lo strumento di test HTTP per inviare la richiesta GET.

    La richiesta esegue una query per determinare lo stato dell'istanza di orchestrazione. Viene in genere indicato che l'istanza è stata completata e include gli output o i risultati dell'app Durable Functions, come in questo esempio:

    {
        "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"
    }
    

    Suggerimento

    Informazioni su come osservare il comportamento di riproduzione di un'app Durable Functions tramite i punti di interruzione.

  5. Per arrestare il debug, premere MAIUSC+F5 in Visual Studio Code.

Dopo aver verificato che la funzione viene correttamente eseguita nel computer locale, è possibile pubblicare il progetto in Azure.

Accedere ad Azure

Prima di poter creare risorse di Azure o pubblicare l'app, è necessario accedere ad Azure.

  1. Se non si è ancora effettuato l'accesso, selezionare l'icona di Azure nella barra attività. Successivamente, in Risorse, selezionare Accedi ad Azure.

    Screenshot della finestra di accesso ad Azure in Visual Studio Code.

    Se si è già connessi e si possono visualizzare le sottoscrizioni esistenti, passare alla sezione successiva. Se non si dispone ancora di un account Azure, selezionare Crea un account Azure. Gli studenti possono selezionare Crea un account Microsoft Azure for Students.

  2. Quando viene visualizzata la richiesta nel browser, selezionare l'account Azure e accedere con le credenziali corrispondenti. Se si crea un nuovo account, è possibile accedere dopo la creazione dell'account.

  3. Dopo avere eseguito l'accesso, è possibile chiudere la nuova finestra del browser. Le sottoscrizioni che appartengono all'account Azure vengono visualizzate nella barra laterale.

Creare l'app per le funzioni in Azure

In questa sezione vengono create un'app per le funzioni e le risorse correlate nella sottoscrizione di Azure. Molte delle decisioni di creazione delle risorse vengono prese in base ai comportamenti predefiniti. Per un maggiore controllo sulle risorse create, è invece necessario creare l'app per le funzioni con opzioni avanzate.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi. Al prompt (>), immettere e selezionare Funzioni di Azure: Crea app per le funzioni in Azure.

  2. Ai prompt, immettere le informazioni seguenti:

    Richiesta Azione
    Selezionare la sottoscrizione Selezionare la sottoscrizione di Azure da usare. Il prompt non è visualizzato quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nome univoco a livello globale per l'app per le funzioni: Inserire un nome valido in un percorso URL. Il nome inserito viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare uno stack di runtime Selezionare la versione della lingua attualmente eseguita in locale.
    Selezionare una località per le nuove risorse Selezionare un'area di Azure. Per prestazioni ottimali, scegliere un'area vicina.

    L'estensione di Azure mostra lo stato delle singole risorse durante la creazione in Azure nel pannello Azure: Log attività.

    Screenshot che mostra il log della creazione di risorse di Azure.

  3. Quando viene creata l'app per le funzioni, nella sottoscrizione di Azure vengono create le risorse correlate seguenti. Le risorse vengono denominate in base al nome immesso per l'app per le funzioni.

    • Un gruppo di risorse, ovvero un contenitore logico di risorse correlate.
    • Un account di Archiviazione di Azure standard, che mantiene lo stato e altre informazioni sul progetto.
    • Un'app per le funzioni, che fornisce l'ambiente per l'esecuzione del codice della funzione. Un'app per le funzioni consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione e la condivisione delle risorse all'interno dello stesso piano di hosting.
    • Un piano di Servizio app di Azure, che definisce l'host sottostante per l'app per le funzioni.
    • Istanza di Application Insights connessa all'app per le funzioni e che tiene traccia dell'uso delle funzioni nell'app.

    Dopo la creazione dell'app per le funzioni e dopo l'applicazione del pacchetto di distribuzione viene visualizzata una notifica.

    Suggerimento

    Per impostazione predefinita, le risorse di Azure richieste dall'app per le funzioni vengono create in base al nome immesso per l'app per le funzioni. Per impostazione predefinita, le risorse vengono create con l'app per le funzioni nello stesso gruppo di risorse. Per personalizzare i nomi delle risorse associate o riutilizzare le risorse esistenti, pubblicare il progetto con le opzioni di creazione avanzate.

Distribuire il progetto in Azure

Importante

La distribuzione in un'app per le funzioni esistente sovrascrive sempre il contenuto di tale app in Azure.

  1. Nel riquadro comandi immettere quindi selezionare Funzioni di Azure: Distribuisci nell'app per le funzioni.

  2. Selezionare l'app per le funzioni appena creata. Quando viene richiesto di sovrascrivere le distribuzioni precedenti, selezionare Distribuisci per distribuire il codice della funzione nella nuova risorsa dell'app per le funzioni.

  3. Al termine della distribuzione, selezionare Visualizza output per visualizzare i risultati della creazione e della distribuzione, incluse le risorse di Azure create. Se non si riesce a visualizzare la notifica, selezionare l'icona della campana nell'angolo in basso a destra per visualizzarla di nuovo.

    Screenshot della finestra Visualizza output.

Testare la funzione in Azure

  1. Nel pannello di output di Visual Studio Code copiare l'URL del trigger HTTP. Il formato dell'URL che chiama la funzione attivata da HTTP sarà simile al seguente:

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

  2. Incollare il nuovo URL per la richiesta HTTP nella barra degli indirizzi del browser. La risposta sullo stato deve essere uguale a quella ottenuta durante il test in locale, quando si usa l'app pubblicata.

L'app Durable Functions per C# creata e pubblicata con Visual Studio Code è pronta per l'uso.

Pulire le risorse

Se non sono più necessarie le risorse create per completare l'avvio rapido, per evitare i costi correlati nella sottoscrizione di Azure, eliminare il gruppo di risorse e tutte le risorse correlate.

In questa guida introduttiva è stato usato Visual Studio 2022 per creare e testare in locale un'app Durable Functions "hello world". La funzione orchestra e concatena le chiamate ad altre funzioni. Successivamente, il codice della funzione verrà pubblicato in Azure. Gli strumenti da usare sono disponibili tramite il Carico Sviluppo di Azure in Visual Studio 2022.

Screenshot del codice dell'app Durable Functions in Visual Studio 2019.

Prerequisiti

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:

  • Visual Studio 2022 installato.

    Assicurarsi che sia installato anche il carico di lavoro Sviluppo di Azure. Lo sviluppo di app Durable Functions è supportato anche in Visual Studio 2019 ma l'interfaccia utente e la procedura sono diverse.

  • Emulatore Azurite installato ed in esecuzione.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Creare un progetto di app per le funzioni

Il modello di Funzioni di Azure crea un progetto che può essere pubblicato in un'app per le funzioni in Azure. È possibile usare un'app per le funzioni per raggruppare le funzioni in un’unità logica in modo da gestire, distribuire, ridimensionare e condividere più facilmente le risorse.

  1. Nel menu File in Visual Studio selezionare Nuovo>Progetto.

  2. In Crea un nuovo progettocercare Funzioni, selezionare il modello Funzioni di Azure e quindi selezionare Avanti.

    Screenshot della finestra di dialogo Nuovo progetto in Visual Studio.

  3. In Nome del progetto immettere un nome per il progetto e quindi selezionare OK. Il nome del progetto deve essere uno spazio dei nomi C# valido, quindi non è possibile usare caratteri di sottolineatura, trattini o altri caratteri non alfanumerici.

  4. In Altre informazioniusare le impostazioni descritte nella tabella successiva.

    Finestra di dialogo Crea una nuova applicazione di Funzioni di Azure in Visual Studio.

    Impostazione Azione Descrizione
    Funzioni ruolo di lavoro Selezionare .NET 8 Isolato (supporto a lungo termine). Crea un progetto di Funzioni di Azure che supporta .NET 8 in esecuzione in un processo di laoro isolato e il runtime di Funzioni di Azure 4.0. Per altre informazioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.
    Funzione Immettere Orchestrazione di Durable Functions. Crea un'orchestrazione di Durable Functions.

    Nota

    Se .NET 8 Isolated (supporto a lungo termine) non viene visualizzato nel menu Ruolo di lavoro di Funzioni, è possibile che non siano presenti i set di strumenti e i modelli di Funzioni di Azure più recenti. Passare a Strumenti>Opzioni>Progetti e soluzioni>Funzioni di Azure>Verificare la disponibilità degli aggiornamenti per scaricare la più recente.

  5. Per usare l'emulatore Azurite, assicurarsi che sia selezionata la casella di controllo Usa Azurite per l'account di archiviazione di runtime (AzureWebJobStorage). Per creare un progetto di Funzioni usando un modello di orchestrazione di Durable Functions, selezionare Crea. Questo progetto contiene i file di configurazione di base necessari per eseguire le funzioni.

    Nota

    È possibile scegliere altre opzioni di archiviazione per l'app Durable Functions. Per altre informazioni, vedere Provider di archiviazione di Durable Functions.

Nella cartella dell'app un file denominato Function1.cs contiene tre funzioni. Le tre funzioni sono i blocchi predefiniti di base di un'app Durable Functions:

metodo Descrizione
RunOrchestrator Definisce l'orchestrazione dell'app Durable Functions. In questo caso, l'orchestrazione viene avviata, crea un elenco e quindi aggiunge il risultato di tre chiamate di funzione all'elenco. Al termine delle tre chiamate di funzione, viene restituito l'elenco.
SayHello Un'app per le funzioni semplice che restituisce hello. Questa funzione contiene la logica di business orchestrata.
HttpStart Una funzione attivata da HTTP che avvia un'istanza dell'orchestrazione e restituisce una risposta di controllo dello stato.

Per altre informazioni su queste funzioni, vedere Tipi e funzionalità di Durable Functions.

Testare la funzione in locale

Azure Functions Core Tools offre la possibilità di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti al primo avvio di una funzione in Visual Studio Code.

  1. In Visual Studio Code impostare un punto di interruzione nel codice della funzione dell'attività SayHello e quindi selezionare F5. Se viene visualizzata, accettare la richiesta di Visual Studio di scaricare e installare gli strumenti Core di Funzioni di Azure (riga di comando). Potrebbe essere necessario anche abilitare un'eccezione del firewall per consentire agli strumenti di gestire le richieste HTTP.

    Nota

    Per altre informazioni sul debug, vedere Diagnostica di Durable Functions.

  2. Copiare l'URL della funzione dall'output di runtime di Funzioni di Azure.

    Screenshot del runtime locale di Azure.

  3. Incollare l'URL per la richiesta HTTP nella barra degli indirizzi del browser ed eseguire la richiesta. Lo screenshot seguente mostra la risposta alla richiesta GET restituita dalla funzione al browser:

    Screenshot che mostra una finestra del browser con la voce statusQueryGetUri evidenziata.

    La risposta è il risultato iniziale della funzione HTTP. Informa che l'orchestrazione durevole è stata avviata correttamente. Non visualizza ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili.

    A questo punto, è necessario che venga raggiunto il punto di interruzione nella funzione dell'attività perché l’orchestrazione possa avviarsi. Eseguire le operazioni richieste per ottenere una risposta sullo stato dell'orchestrazione.

  4. Copiare il valore dell'URL per statusQueryGetUri, incollarlo nella barra degli indirizzi del browser ed eseguire la richiesta.

    La richiesta esegue una query per determinare lo stato dell'istanza di orchestrazione. Si noterà che l'istanza è stata completata e che include gli output o i risultati della funzione durevole, come in questo esempio:

    {
        "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"
    }
    

    Suggerimento

    Informazioni su come osservare il comportamento di riproduzione di un'app Durable Functions tramite i punti di interruzione.

  5. Per arrestare il debug, selezionare MAIUSC+F5.

Dopo aver verificato che la funzione viene correttamente eseguita nel computer locale, è possibile pubblicare il progetto in Azure.

Pubblicare il progetto in Azure

Per poter pubblicare il progetto, è necessario che la sottoscrizione di Azure includa un'app per le funzioni. È possibile creare un'app per le funzioni in Visual Studio.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica. In Destinazione, selezionare Azure e quindi Avanti.

    Screenshot del riquadro di pubblicazione.

  2. In Destinazione specifica selezionare App per le funzioni di Azure (Windows). Viene creata un'app per le funzioni da eseguire in Windows. Selezionare Avanti.

    Screenshot del riquadro di pubblicazione con una destinazione specifica.

  3. Nella pagina Istanza di Funzioni selezionare Crea una nuova istanza di Funzioni di Azure.

    Screenshot che mostra l'opzione Crea una nuova istanza dell'app per le funzioni.

  4. Creare una nuova istanza usando i valori specificati nella tabella seguente:

    Impostazione valore Descrizione
    Nome Nome globalmente univoco Nome che identifica in modo univoco la nuova app per le funzioni. Accettare questo nome o immetterne uno nuovo. I caratteri validi sono a-z, 0-9 e -.
    Abbonamento Sottoscrizione in uso Sottoscrizione di Azure da usare. Accettare questa sottoscrizione o selezionarne un'altra dall'elenco a discesa.
    Gruppo di risorse Nome del gruppo di risorse Gruppo di risorse in cui si desidera creare l'app per le funzioni. Per creare un nuovo gruppo di risorse, selezionare Nuovo. È anche possibile scegliere un gruppo di risorse esistente dall'elenco a discesa.
    Tipo di piano Consumo Quando si pubblica il progetto in un'app per le funzioni eseguita in un piano a consumo, vengono addebitati solo i costi relativi alle esecuzioni dell'app per le funzioni. Altri piani di hosting comportano costi più elevati.
    Location La località del piano di servizio app Scegliere una località in un'area di Azure nelle vicinanze o vicino ad altri servizi a cui accedono le funzioni.
    Archiviazione di Azure Account di archiviazione per utilizzo generico L'account di archiviazione di Azure è necessario per il runtime di Funzioni. Selezionare Nuovo per configurare un account di archiviazione per utilizzo generico. Si può anche scegliere di usare un account esistente che soddisfi i requisiti dell'account di archiviazione.
    Application Insights Istanza di Application Insights È consigliabile abilitare l'integrazione di Azure Application Insights con l'app per le funzioni. Selezionare Nuovo per creare una nuova istanza, in un'area di lavoro Log Analytics nuova o esistente. È anche possibile scegliere un'istanza esistente.

    Screenshot della finestra di dialogo Crea servizio app.

  5. Selezionare Crea per creare un'app per le funzioni e le relative risorse in Azure. Lo stato di creazione della risorsa viene visualizzato nell'angolo in basso a sinistra della finestra.

  6. In Istanza di funzioni assicurarsi che sia selezionata la casella di controllo Esegui da file di pacchetto. L'app per le funzioni viene distribuita usando la distribuzione ZIP con la modalità Esecuzione da pacchetto abilitata. La distribuzione ZIP è il metodo di distribuzione consigliato per il progetto di funzioni, perché offre prestazioni più elevate.

    Screenshot del riquadro di completamento della creazione del profilo.

  7. Selezionare Fine e quindi, nella pagina Pubblica, selezionare Pubblica per distribuire il pacchetto contenente i file di progetto nella nuova app per le funzioni in Azure.

    Al termine della distribuzione, l'URL radice dell'app per le funzioni in Azure viene visualizzato nella scheda Pubblica.

  8. Nella sezione Hosting della scheda Pubblica selezionare Apri nel portale di Azure. La nuova risorsa di Azure dell'app per le funzioni viene aperta nel portale di Azure.

    Screenshot del messaggio che conferma il completamento dell’operazione di pubblicazione.

Testare la funzione in Azure

  1. Nella pagina Profilo di pubblicazione copiare l'URL di base dell'app per le funzioni. Sostituire la parte localhost:port dell'URL usato durante il test della funzione in locale con il nuovo URL di base.

    L'URL che chiama il trigger HTTP della funzione durevole deve avere il formato seguente:

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

  2. Incollare il nuovo URL per la richiesta HTTP nella barra degli indirizzi del browser. Quando si usa l'app pubblicata, la risposta sullo stato deve essere uguale a quella ottenuta durante il test in locale.

L'app Durable Functions per C# creata e pubblicata con Visual Studio è pronta per l'uso.

Pulire le risorse

Se non sono più necessarie le risorse create per completare l'avvio rapido, per evitare i costi correlati nella sottoscrizione di Azure, eliminare il gruppo di risorse e tutte le risorse correlate.