Esercitazione: Usare la configurazione dinamica in un'app .NET Framework
I dati di Configurazione app possono essere caricati come impostazioni dell'app in un'app .NET Framework. Per altre informazioni, vedere la guida introduttiva. Tuttavia, come è progettato da .NET Framework, le impostazioni dell'app possono essere aggiornate solo al riavvio dell'app. Il provider .NET Configurazione app è una libreria .NET Standard. Supporta la memorizzazione nella cache e l'aggiornamento della configurazione in modo dinamico senza il riavvio dell'app. Questa esercitazione illustra come implementare gli aggiornamenti della configurazione dinamica in un'app console .NET Framework.
In questa esercitazione apprenderai a:
- Configurare l'app .NET Framework per aggiornarne la configurazione in risposta alle modifiche in un archivio di Configurazione app.
- Inserire la configurazione più recente nell'applicazione.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Crearne una gratuitamente.
- Un Archivio di configurazione app. Creare un archivio.
- Visual Studio
- .NET Framework 4.7.2 o versione successiva
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.
Chiave | valore |
---|---|
TestApp:Settings:Message | Dati di Configurazione app di Azure |
Creare un'app console .NET Framework
Avviare Visual Studio e selezionare Crea un nuovo progetto.
In Crea un nuovo progetto filtrare in base al tipo di progetto console e selezionare App console (.NET Framework) con C# dall'elenco dei modelli di progetto. Premere Avanti.
In Configura il nuovo progetto immettere un nome di progetto. In Framework selezionare .NET Framework 4.7.2 o versione successiva. Premere Crea.
Ricaricare i dati di Configurazione app
Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet. Nella scheda Sfoglia cercare e aggiungere la versione più recente del pacchetto NuGet seguente al progetto.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Aprire Program.cs e aggiungere gli spazi dei nomi seguenti.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Aggiungere due variabili per archiviare gli oggetti correlati alla configurazione.
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
Aggiornare il metodo
Main
per connettersi a Configurazione app con le opzioni di aggiornamento specificate.static void Main(string[] args) { var builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:`. .Select("TestApp:*") // Configure to reload the key 'TestApp:Settings:Message' if it is modified. .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Message") .SetCacheExpiration(TimeSpan.FromSeconds(10)); }); _refresher = options.GetRefresher(); }); _configuration = builder.Build(); PrintMessage().Wait(); }
ConfigureRefresh
Nel metodo viene registrata una chiave all'interno dell'archivio Configurazione app per il monitoraggio delle modifiche. IlRegister
metodo dispone di un parametrorefreshAll
booleano facoltativo che può essere usato per indicare se tutti i valori di configurazione devono essere aggiornati se la chiave registrata cambia. In questo esempio verrà aggiornata solo la chiave TestApp:Settings:Message . IlSetCacheExpiration
metodo specifica il tempo minimo che deve trascorrere prima che venga effettuata una nuova richiesta a Configurazione app per verificare la presenza di eventuali modifiche alla configurazione. In questo esempio si esegue l'override dell'ora di scadenza predefinita di 30 secondi, specificando invece un'ora di 10 secondi a scopo dimostrativo.Aggiungere un metodo denominato
PrintMessage()
che attiva un aggiornamento dei dati di configurazione da Configurazione app.private static async Task PrintMessage() { Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); // Wait for the user to press Enter Console.ReadLine(); await _refresher.TryRefreshAsync(); Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); }
La chiamata al
ConfigureRefresh
metodo da solo non causerà l'aggiornamento automatico della configurazione. Chiamare ilTryRefreshAsync
metodo dall'interfacciaIConfigurationRefresher
per attivare un aggiornamento. Questa progettazione consiste nell'evitare richieste inviate a Configurazione app anche quando l'applicazione è inattiva. È possibile includere la chiamata in cui si considera attiva l'applicazioneTryRefreshAsync
. Ad esempio, può essere quando si elabora un messaggio in arrivo, un ordine o un'iterazione di un'attività complessa. Può anche essere in un timer se l'applicazione è attiva sempre. In questo esempio si chiamaTryRefreshAsync
quando si preme INVIO. Si noti che, anche se la chiamataTryRefreshAsync
non riesce per qualsiasi motivo, l'applicazione continuerà a usare la configurazione memorizzata nella cache. Verrà eseguito un altro tentativo quando è trascorsa la scadenza della cache configurata e laTryRefreshAsync
chiamata viene attivata di nuovo dall'attività dell'applicazione. La chiamataTryRefreshAsync
è un'operazione no-op prima della scadenza della cache configurata, quindi l'impatto sulle prestazioni è minimo, anche se viene chiamato di frequente.
Compilare ed eseguire l'app in locale
Impostare una variabile di ambiente denominata ConnectionString sulla chiave di sola lettura stringa di connessione ottenuta durante la creazione dell'archivio Configurazione app.
Se si usa il prompt dei comandi di Windows, eseguire il comando seguente:
setx ConnectionString "connection-string-of-your-app-configuration-store"
Se si usa Windows PowerShell, eseguire il comando seguente:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
Riavviare Visual Studio per rendere effettiva la modifica.
Premere CTRL+F5 per compilare ed eseguire l'app console.
Nella portale di Azure passare a Esplora configurazione dell'archivio Configurazione app e aggiornare il valore della chiave seguente.
Chiave valore TestApp:Settings:Message Dati della configurazione di app Azure - Aggiornato Tornare all'applicazione in esecuzione e premere INVIO per attivare un aggiornamento, quindi stampare il valore aggiornato nel prompt dei comandi o nella finestra di PowerShell.
Nota
Poiché la scadenza della cache è stata impostata su 10 secondi usando il metodo
SetCacheExpiration
quando è stata specificata la configurazione per l'operazione di aggiornamento, il valore dell'impostazione di configurazione verrà aggiornato solo se sono trascorsi almeno 10 secondo dopo l'ultimo aggiornamento di tale impostazione.
Pulire le risorse
Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.
Importante
L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.
Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.
Passaggi successivi
In questa esercitazione è stata abilitata l'app .NET Framework per aggiornare dinamicamente le impostazioni di configurazione di Configurazione app. Per informazioni su come abilitare la configurazione dinamica in un'applicazione Web ASP.NET (.NET Framework), continuare con l'esercitazione successiva:
Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a Configurazione app, continuare con l'esercitazione successiva: