Guida introduttiva: Creare una soluzione Aspire con Configurazione app di Azure

In questa guida introduttiva rapida, usi Configurazione app di Azure per esternalizzare l'archiviazione e la gestione delle impostazioni dell'applicazione per un progetto Aspire. Usi le librerie di integrazione Configurazione app di Azure Aspire per fornire una risorsa App Configuration e usi App Configuration in ogni app distribuita.

Prerequisiti

Testare l'app localmente

Il modello Aspira starter include un'app Web front-end che comunica con un progetto API minimo. Il progetto API fornisce dati meteorologici falsi al frontend. L'app frontend utilizza il service discovery per connettersi al progetto API. Un AppHost orchestra tutte le risorse nella soluzione Aspire.

  1. Dalla root della soluzione, esegui l'AppHost:

    aspire run
    

    Nel browser viene visualizzato il dashboard Aspira.

    Screenshot del dashboard Aspire con il frontend web e le risorse di servizio API.

  2. Fare clic sull'URL del front-end Web. Viene visualizzata una pagina con un messaggio di benvenuto.

    Screenshot di un'app Web con un messaggio di benvenuto.

Aggiungere Configurazione app di Azure alla soluzione Aspira

  1. Vai alla directory AppHost. Esegui il seguente comando per aggiungere il Aspire.Hosting.Azure.AppConfiguration pacchetto NuGet.

    aspire add Aspire.Hosting.Azure.AppConfiguration
    

    Per maggiori informazioni, consulta aspire addl'integrazione Configurazione app di Azure Hosting.

  2. Aprire il file AppHost.cs e aggiungere il codice seguente.

    var builder = DistributedApplication.CreateBuilder(args);
    
    // Add an Azure App Configuration resource
    var appConfiguration = builder.AddAzureAppConfiguration("appconfiguration");
    

    Importante

    Quando si chiama AddAzureAppConfiguration, si indica all'app di generare le risorse di Azure in modo dinamico durante l'avvio dell'app. L'app deve configurare l'abbonamento e la località appropriate. Per ulteriori informazioni, vedere Implementazione locale di Azure. Se si usa la versione più recente di Aspire SDK, è possibile configurare le informazioni sulla sottoscrizione tramite il dashboard Aspira. Schermata della finestra di dialogo

    Annotazioni

    È necessario avere il ruolo Proprietario o Amministratore accesso utenti assegnato nella sottoscrizione di Azure. Questi ruoli sono necessari per creare assegnazioni di ruolo nell'ambito del processo di provisioning.

    Suggerimento

    Fai riferimento a un App Configuration store esistente passando il suo nome e il gruppo di risorse come parametri a AsExisting():

    var storeName = builder.AddParameter("appConfigurationName");
    var resourceGroup = builder.AddParameter("appConfigurationResourceGroup");
    
    var appConfiguration = builder.AddAzureAppConfiguration("appconfiguration")
        .AsExisting(storeName, resourceGroup);
    

    Per maggiori informazioni, vedi Usa risorse Azure esistenti.

  3. Aggiungere il riferimento alla risorsa Configurazione app e configurare il progetto webfrontend in modo da prevedere un tempo di attesa.

    builder.AddProject<Projects.AspireApp_Web>("webfrontend")
        .WithExternalHttpEndpoints()
        .WithHttpHealthCheck("/health")
        .WithReference(apiService)
        .WaitFor(apiService)
        .WithReference(appConfiguration) // reference the App Configuration resource
        .WaitFor(appConfiguration); // wait for the App Configuration resource to enter the Running state before starting the resource
    
  4. Dalla radice della soluzione, esegui aspire run. Vedi la risorsa Configurazione app di Azure che viene provisionata.

    Screenshot del dashboard Aspire per la configurazione della risorsa Configurazione app di Azure.

  5. Attendere alcuni minuti e vedrete che è stata effettuata la configurazione della risorsa di Configurazione app di Azure ed è attiva.

    Screenshot del dashboard di Aspire con la risorsa Configurazione app di Azure in esecuzione.

  6. Passare al portale di Azure facendo clic sull'URL di distribuzione nel dashboard Aspira. Si noterà che la distribuzione è stata completata ed è possibile passare alla risorsa di Configurazione app di Azure.

    Screenshot del portale di Azure che mostra che la distribuzione di Configurazione app è stata completata.

Aggiungere un valore chiave

Aggiungere il valore chiave seguente all'archivio di Configurazione app e lasciare Etichetta e Tipo di contenuto con i valori predefiniti. Per altre informazioni su come aggiungere valori chiave a un archivio usando il portale di Azure o l’interfaccia della riga di comando, andare a Creare un valore chiave.

Key Value
TestApp:Settings:Message Ciao da Configurazione app di Azure!

Aggiungere Configurazione app di Azure alla soluzione Aspira

  1. Vai alla directory AppHost. Esegui il seguente comando per aggiungere il Aspire.Hosting.Azure.AppConfiguration pacchetto NuGet.

    aspire add Aspire.Hosting.Azure.AppConfiguration
    

    Per maggiori informazioni, consulta aspire addl'integrazione Configurazione app di Azure Hosting.

  2. Aprire il file AppHost.cs e aggiungere il codice seguente.

    var builder = DistributedApplication.CreateBuilder(args);
    
    // Add an Azure App Configuration resource
    var appConfiguration = builder.AddAzureAppConfiguration("appconfiguration")
        .RunAsEmulator(emulator => { // use the App Configuration emulator
            emulator.WithDataBindMount();
        });
    

    Importante

    Quando si chiama RunAsEmulator, esegue il pull dell'immagine dell'emulatore di Configurazione app ed esegue un contenitore come risorsa di Configurazione app. Assicurarsi di disporre di un runtime del contenitore conforme a OCI nel computer. Per ulteriori informazioni, consultare Aspire Container Runtime.

    Suggerimento

    È possibile chiamare WithDataBindMount o WithDataVolume per configurare la risorsa emulatore per l'archiviazione del contenitore permanente in modo che non sia necessario ricreare i valori delle chiavi ogni volta.

  3. Aggiungere il riferimento alla risorsa Configurazione app e configurare il progetto webfrontend in modo da prevedere un tempo di attesa.

    builder.AddProject<Projects.AspireApp_Web>("webfrontend")
        .WithExternalHttpEndpoints()
        .WithHttpHealthCheck("/health")
        .WithReference(apiService)
        .WaitFor(apiService)
        .WithReference(appConfiguration) // reference the App Configuration resource
        .WaitFor(appConfiguration); // wait for the App Configuration resource to enter the Running state before starting the resource
    
  4. Avviare il runtime del contenitore. In questa esercitazione si usa Docker Desktop.

  5. Dalla radice della soluzione, esegui aspire run. Vai al dashboard Aspire. Noti che la risorsa dell'emulatore di configurazione dell'app è in esecuzione.

    Screenshot del dashboard di Aspire che mostra la risorsa emulatore di configurazione dell'app.

    Viene avviato un contenitore per eseguire l'emulatore di Configurazione app.

    Screenshot del desktop Docker che esegue un contenitore.

Aggiungere un valore chiave

  1. Fare clic sull'URL della appconfiguration risorsa. Viene visualizzata l'interfaccia utente dell'emulatore di Configurazione app.

  2. Fare clic sul Create pulsante nell'angolo superiore destro.

    Screenshot dell'interfaccia utente dell'emulatore di Configurazione app.

  3. Aggiungere il valore chiave seguente.

    Key Value
    TestApp:Settings:Message Ciao da Configurazione app di Azure!
  4. Fare clic sul pulsante Save.

    Screenshot dell'interfaccia utente dell'emulatore di Configurazione app per la creazione di un nuovo valore di chiave.

Usare Configurazione App nell'applicazione Web

  1. Vai alla directory del progetto Web. Esegui il seguente comando per aggiungere il Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration pacchetto NuGet.

    dotnet add package Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration
    
  2. Aprire il file Program.cs e aggiungere il codice seguente.

    var builder = WebApplication.CreateBuilder(args);
    
    // Use Azure App Configuration
    builder.AddAzureAppConfiguration("appconfiguration"); // use the resource name defined in the AppHost project
    
  3. Aprire il file Components/Pages/Home.razor e aggiornarlo con il codice seguente.

    @page "/"
    
    @inject IConfiguration Configuration
    
    <PageTitle>Home</PageTitle>
    
    <h1>Hello, world!</h1>
    
    @if (!string.IsNullOrWhiteSpace(message))
    {
        <div class="alert alert-info">@message</div>
    }
    else
    {
        <div class="alert alert-info">Welcome to your new app.</div>
    }
    
    @code {
        private string? message;
    
        protected override void OnInitialized()
        {
            string? msg = Configuration["TestApp:Settings:Message"];
            message = string.IsNullOrWhiteSpace(msg) ? null : msg;
        }
    }
    
  4. Ferma il processo corrente aspire run , esegui aspire run di nuovo e poi seleziona l'URL frontend web nella dashboard di Aspire.

    Screenshot del dashboard di Aspire che mostra le risorse.

  5. Viene visualizzata una pagina con un messaggio di benvenuto da Configurazione app di Azure.

    Screenshot dell'app Web con un messaggio di benvenuto da Configurazione app di Azure.

Per maggiori informazioni su come le applicazioni consumatrici ricevono e utilizzano l'endpoint App Configuration, vedi Connect to Configurazione app di Azure.

Passaggi successivi

Questa guida introduttiva spiega come:

  • Aggiunto una risorsa di Configurazione app di Azure in una soluzione Aspire.
  • Leggi i valori chiave da Configurazione app di Azure con la libreria di integrazione App Configuration Aspire.
  • È stata visualizzata una pagina Web usando le impostazioni configurate in Configurazione app.

Per informazioni su come configurare l'app Aspire per aggiornare dinamicamente le impostazioni di configurazione, procedere alla prossima esercitazione.

Per imparare a usare i feature flags nella tua app Aspire, procedi al tutorial successivo.

Per altre informazioni sull'emulatore di Configurazione app di Azure, continuare con il documento seguente.