Condividi tramite


Creare la prima funzione permanente in C#

Durable Functions è un'estensione di Funzioni di Azure che consente di scrivere funzioni con stato in un ambiente serverless. L'estensione gestisce automaticamente lo stato, i checkpoint e i riavvii.

Questo articolo illustra come usare Visual Studio Code per creare e testare in locale una funzione durevole "hello world". Questa funzione orchestra e concatena le chiamate ad altre funzioni. È quindi possibile pubblicare il codice della funzione in Azure. Questi strumenti sono disponibili come parte dell'estensione Funzioni di Azure di Visual Studio Code.

Screenshot della finestra di Visual Studio Code con una funzione durevole.

Prerequisiti

Per completare questa esercitazione:

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

Creare il progetto locale

In questa sezione si userà Visual Studio Code per creare un progetto di Funzioni di Azure locale.

  1. In Visual Studio Code premere F1 (o CTRL/CMD+MAIUSC+P) per aprire il riquadro comandi. Nel riquadro comandi cercare e selezionare Azure Functions: Create New Project....

    Screenshot della finestra di creazione di un progetto di funzione.

  2. Scegliere una cartella vuota come posizione del progetto e quindi Seleziona.

  3. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Selezionare un linguaggio per il progetto di app per le funzioni C# Creare un progetto Funzioni C# in locale.
    Selezionare una versione Funzioni di Azure v4 Questa opzione viene visualizzata solo quando gli strumenti Core Tools non sono già installati. In questo caso, gli strumenti Core Tools vengono installati la prima volta che si esegue l'app.
    Selezionare un modello per la prima funzione del progetto Ignorare per ora
    Specificare come aprire il progetto Open in current window (Apri nella finestra corrente) Riapre Visual Studio Code nella cartella selezionata.

Visual Studio Code installa Funzioni di Azure Core Tools, se necessario. 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.

Aggiungere funzioni all'app

La procedura seguente usa un modello per creare il codice di funzione durevole nel progetto.

  1. Nel riquadro comandi cercare e selezionare Azure Functions: Create Function....

  2. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Select a template for your function (Selezionare un modello per la funzione) DurableFunctionsOrchestration Creare un'orchestrazione Durable Functions
    Specificare un nome di funzione HelloOrchestration Nome della classe in cui vengono create le funzioni
    Specificare uno spazio dei nomi Company.Function Spazio dei nomi per la classe generata
  3. Quando Visual Studio Code richiede di selezionare un account di archiviazione, scegliere Seleziona account di archiviazione. Seguire le istruzioni e fornire le informazioni seguenti per creare un nuovo account di archiviazione in Azure:

    Richiesta Valore Descrizione
    Selezionare la sottoscrizione nome della sottoscrizione Selezionare la sottoscrizione di Azure
    Select a storage account (Selezionare un account di archiviazione) Creare un nuovo account di archiviazione
    Enter the name of the new storage account (Immettere il nome del nuovo account di archiviazione) nome univoco Nome dell'account di archiviazione da creare
    Selezionare un gruppo di risorse nome univoco Nome del gruppo di risorse da creare
    Selezionare una località region Selezionare un'area nelle vicinanze

Al progetto viene aggiunta una classe contenente le nuove funzioni. Visual Studio Code aggiunge anche l'account di archiviazione stringa di connessione a local.settings.json e un riferimento al Microsoft.Azure.WebJobs.Extensions.DurableTask pacchetto NuGet al file di progetto con estensione csproj.

Aprire il nuovo file HelloOrchestration.cs per visualizzarne il contenuto. Questa funzione durevole è un esempio di concatenamento di funzioni semplici con i metodi seguenti:

metodo FunctionName Descrizione
RunOrchestrator HelloOrchestration Gestisce l'orchestrazione permanente. In questo caso, l'orchestrazione viene avviata, crea un elenco e aggiunge il risultato di tre chiamate di funzione all'elenco. Quando le tre chiamate sono completate, la funzione restituisce l'elenco.
SayHello HelloOrchestration_Hello La funzione restituisce un hello. Si tratta della funzione che contiene la logica di business che viene orchestrata.
HttpStart HelloOrchestration_HttpStart Un' funzione attivata da HTTP che avvia un'istanza dell'orchestrazione e restituisce una risposta di controllo stato.

Dopo aver creato il progetto per le funzioni e una funzione durevole, è possibile testare la funzione nel computer locale.

Testare la funzione in locale

Azure Functions Core Tools consente di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti al primo avvio di una funzione da Visual Studio Code.

  1. Per testare la funzione, impostare un punto di interruzione nel codice della SayHello funzione attività e premere F5 per avviare il progetto dell'app per le funzioni. L'output dagli strumenti di base viene visualizzato nel pannello Terminale.

    Nota

    Per altre informazioni sul debug, vedere Durable Functions Diagnostics.For more information on debugging, see Durable Functions Diagnostics.

  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 come Postman o cURL e quindi inviare una richiesta HTTP POST all'endpoint URL.

    La risposta è il risultato iniziale della funzione HTTP, che indica che l'orchestrazione durevole è stata avviata correttamente. Non è ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili. Per il momento si eseguirà una query relativa allo 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 Postman per inviare la richiesta GET.

    La richiesta eseguirà una query per determinare lo stato dell'istanza di orchestrazione. È necessario ottenere una risposta finale, che indica che l'istanza è stata completata e include gli output o i risultati della funzione durevole. L'aspetto sarà simile al seguente:

    {
        "name": "HelloOrchestration",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Per arrestare il debug, premere MAIUSC + F5 in Visual Studio Code.

Dopo aver verificato la corretta esecuzione della funzione 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 è già stato eseguito l'accesso, scegliere l'icona di Azure nella barra attività. Quindi nell'area Risorse scegliere Accedi ad Azure....

    Screenshot della finestra di accesso ad Azure all'interno di VS Code.

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

  2. Quando viene visualizzata la richiesta nel browser, scegliere 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 viene creata un'app per le funzioni e le risorse correlate nella sottoscrizione di Azure.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi e cercare ed eseguire il comando Azure Functions: Create Function App in Azure....

  2. Quando richiesto, immettere le informazioni seguenti:

    Richiesta Selezione
    Selezionare la sottoscrizione scegliere la sottoscrizione da usare. Questa richiesta non verrà visualizzata quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nome univoco globale per l'app per le funzioni digitare un nome valido in un percorso URL. Il nome digitato viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare uno stack di runtime Scegliere la versione della lingua in cui è stato eseguito localmente.
    Selezionare un percorso per le nuove risorse per prestazioni ottimali, scegliere un'area vicina.

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

    Log della creazione di risorse di Azure

  3. Al termine della creazione, nella sottoscrizione vengono create le risorse di Azure seguenti. Le risorse sono denominate in base al nome dell'app per le funzioni:

    • Un gruppo di risorse, ovvero un contenitore logico di risorse correlate.
    • Un account Archiviazione di Azure standard, che mantiene lo stato e altre informazioni sui progetti.
    • 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 servizio app, che definisce l'host sottostante per l'app per le funzioni.
    • Un'istanza di Application Insights connessa all'app per le funzioni, che tiene traccia dell'utilizzo 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 dell'app per le funzioni specificato. Per impostazione predefinita, vengono creati anche nello stesso nuovo gruppo di risorse con l'app per le funzioni. Se si desidera personalizzare i nomi di queste risorse o riutilizzare le risorse esistenti, è necessario pubblicare il progetto con 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 cercare ed eseguire il comando Azure Functions: Deploy to Function App....

  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. Copiare l'URL del trigger HTTP dal pannello Output. L'URL che chiama la funzione attivata tramite HTTP deve essere nel formato seguente:

    https://<functionappname>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Incollare questo nuovo URL per la richiesta HTTP nella barra degli indirizzi del browser. È necessario ottenere la stessa risposta di stato di prima quando si usa l'app pubblicata.

Passaggi successivi

Si è usato Visual Studio Code per creare e pubblicare un'app per le funzioni durevoli in C#.

Questo articolo illustra come usare Visual Studio 2022 per creare e testare in locale una funzione durevole "hello world". Questa funzione orchestra e concatena le chiamate ad altre funzioni. Il codice della funzione verrà quindi pubblicato in Azure. Questi strumenti sono disponibili come parte del carico di lavoro Sviluppo di Azure in Visual Studio 2022.

Screenshot della finestra di Visual Studio 2019 con una funzione durevole.

Prerequisiti

Per completare questa esercitazione:

  • Installare Visual Studio 2022. Assicurarsi che sia installato anche il carico di lavoro Sviluppo di Azure. Visual Studio 2019 supporta anche lo sviluppo di Funzioni permanenti, ma l'interfaccia utente e i passaggi differiscono.

  • Verificare di avere installato e in esecuzione l'emulatore Azurite.

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

  1. In Visual Studio selezionare Nuovo>Progetto dal menu File.

  2. Nella finestra di dialogo Crea un nuovo progetto cercare functions, scegliere il modello di Funzioni di Azure e quindi selezionare Avanti.

    Screenshot della finestra di dialogo nuovo progetto per creare una funzione in Visual Studio.

  3. Immettere un nome progetto per il progetto e selezionare OK. Il nome del progetto deve essere valido come spazio dei nomi C#, quindi non usare caratteri di sottolineatura, trattini o caratteri non alfanumerici.

  4. In Informazioni aggiuntive usare le impostazioni specificate nella tabella che segue l'immagine.

    Screenshot della creazione di una nuova finestra di dialogo applicazione Funzioni di Azure in Visual Studio.

    Impostazione Valore suggerito Descrizione
    Ruolo di lavoro di Funzioni .NET 6 Crea un progetto di funzione che supporta .NET 6 e Funzioni di Azure Runtime 4.0. Per altre informazioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.
    Funzione Vuoto Crea un'app per le funzioni vuota.
    Account di archiviazione Emulatore di archiviazione Per gestire lo stato della funzione durevole è necessario un account di archiviazione.
  5. Selezionare Crea per creare un progetto di funzione vuoto. Questo progetto contiene i file di configurazione di base necessari per eseguire le funzioni.

Aggiungere funzioni all'app

La procedura seguente usa un modello per creare il codice di funzione durevole nel progetto.

  1. Fare clic con il pulsante destro del mouse sul progetto in Visual Studio e scegliere Aggiungi>Nuova funzione di Azure.

    Screenshot di Aggiungi nuova funzione.

  2. Verificare che la funzione di Azure sia selezionata dal menu Aggiungi, immettere un nome per il file C# e quindi selezionare Aggiungi.

  3. Selezionare il modello Di orchestrazione di Funzioni permanenti e quindi selezionare Aggiungi.

    Screenshot di Select durable template (Seleziona modello durevole).

All'app verrà aggiunta una nuova funzione durevole. Aprire il nuovo file .cs per visualizzare il contenuto. Questa funzione durevole è un esempio di concatenamento di funzioni semplici con i metodi seguenti:

metodo FunctionName Descrizione
RunOrchestrator <file-name> Gestisce l'orchestrazione permanente. In questo caso, l'orchestrazione viene avviata, crea un elenco e aggiunge il risultato di tre chiamate di funzione all'elenco. Quando le tre chiamate sono completate, la funzione restituisce l'elenco.
SayHello <file-name>_Hello La funzione restituisce un hello. Si tratta della funzione che contiene la logica di business che viene orchestrata.
HttpStart <file-name>_HttpStart Un' funzione attivata da HTTP che avvia un'istanza dell'orchestrazione e restituisce una risposta di controllo stato.

È possibile testarlo nel computer locale ora che è stato creato il progetto di funzione e una funzione durevole.

Testare la funzione in locale

Azure Functions Core Tools consente di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti la prima volta che si avvia una funzione da Visual Studio.

  1. Per testare la funzione premere F5. Se viene visualizzata, accettare la richiesta di Visual Studio di scaricare e installare gli strumenti dell'interfaccia della riga di comando Azure Functions Core Tools. Potrebbe essere necessario anche abilitare un'eccezione del firewall per consentire agli strumenti di gestire le richieste HTTP.

  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. Di seguito è illustrata la risposta nel browser alla richiesta GET locale restituita dalla funzione:

    Screenshot della finestra del browser con statusQueryGetUri evidenziata.

    La risposta è il risultato iniziale della funzione HTTP, che indica che l'orchestrazione durevole è stata avviata correttamente. Non è ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili. Per il momento si eseguirà una query relativa allo stato dell'orchestrazione.

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

    La richiesta eseguirà una query per determinare lo stato dell'istanza di orchestrazione. È necessario ottenere una risposta finale simile alla seguente. Questo output mostra che l'istanza è stata completata e include gli output o i risultati della funzione durevole.

    {
        "name": "Durable",
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2019-11-02T07:07:40Z",
        "lastUpdatedTime": "2019-11-02T07:07:52Z"
    }
    
  5. Per interrompere il debug, premere MAIUSC+F5.

Dopo aver verificato la corretta esecuzione della funzione nel computer locale, è possibile pubblicare il progetto in Azure.

Pubblicare il progetto in Azure

È necessario disporre di un'app per le funzioni nella sottoscrizione di Azure prima di pubblicare il progetto. È possibile creare un'app per le funzioni direttamente da 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 della finestra di pubblicazione.

  2. Selezionare App per le funzioni di Azure (Windows) per La destinazione specifica, che crea un'app per le funzioni eseguita in Windows e quindi selezionare Avanti.

    Screenshot della finestra di pubblicazione con una destinazione specifica.

  3. Nell'istanza della funzione scegliere Crea una nuova funzione di Azure...

    Screenshot della creazione di 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 una nuova dall'elenco a discesa.
    Gruppo di risorse Nome del gruppo di risorse Gruppo di risorse in cui si vuole creare l'app per le funzioni. Selezionare Nuovo per creare un nuovo gruppo di risorse. È 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 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. È anche possibile scegliere un account esistente che soddisfi i requisiti dell'account di archiviazione.
    Application Insights Istanza di Application Insights È consigliabile abilitare l'integrazione di Application Insights per 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 della creazione della risorsa viene visualizzato in basso a sinistra della finestra.

  6. Nell'istanza di Funzioni verificare che sia selezionata l'opzione Esegui dal file del pacchetto. L'app per le funzioni viene distribuita usando la distribuzione ZIP con la modalità esecuzione da pacchetto abilitata. Zip Deploy è il metodo di distribuzione consigliato per il progetto di funzioni con prestazioni migliori.

    Screenshot della creazione del profilo fine.

  7. Selezionare Fine e quindi, nella pagina Pubblica, selezionare Pubblica per distribuire il pacchetto contenente i file del 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 scegliere Apri in portale di Azure. Verrà aperta la nuova risorsa di Azure dell'app per le funzioni nella portale di Azure.

    Screenshot del messaggio Pubblica operazione riuscita.

Testare la funzione in Azure

  1. Copiare l'URL di base dell'app per le funzioni dalla pagina del profilo di pubblicazione. 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 essere nel formato seguente:

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

  2. Incollare questo nuovo URL per la richiesta HTTP nella barra degli indirizzi del browser. È necessario ottenere la stessa risposta di stato di prima quando si usa l'app pubblicata.

Passaggi successivi

Si è usato Visual Studio per creare e pubblicare un'app per le funzioni durevoli in C#.