Partager via


Tutoriel : Utiliser la configuration dynamique dans une application .NET Framework

Les données d’App Configuration peuvent être chargées en tant que paramètres de l’application dans une application .NET Framework. Pour plus d’informations, consultez le guide de démarrage rapide. Toutefois, comme conçu par le .NET Framework, les paramètres de l’application ne peuvent être actualisés que lors du redémarrage de l’application. Le fournisseur .NET d’App Configuration est une bibliothèque .NET Standard. Il prend en charge la mise en cache et l’actualisation dynamiques de la configuration sans redémarrage de l’application. Ce tutoriel montre comment vous pouvez implémenter des mises à jour de configuration dynamiques dans une application console .NET Framework.

Dans ce tutoriel, vous allez apprendre à :

  • Configurer votre application .NET Framework pour mettre à jour sa configuration en réponse aux changements survenant dans un magasin App Configuration.
  • Injecter la configuration la plus récente dans votre application.

Prérequis

Ajouter une clé-valeur

Ajoutez la clé-valeur suivante au magasin App Configuration et laissez les valeurs par défaut pour Étiquette et Type de contenu. Pour plus d’informations sur l’ajout de clés-valeurs à un magasin avec le Portail Azure ou la CLI, consultez Créer une clé-valeur.

Clé Valeur
TestApp:Settings:Message Data from Azure App Configuration

Créer une application console .NET Framework

  1. Démarrez Visual Studio et sélectionnez Créer un projet.

  2. Dans Créer un projet, filtrez sur le type de projet Console et sélectionnez Application console (.NET Framework) avec C# dans la liste de modèles de projet. Appuyez sur Suivant.

  3. Dans Configurer votre nouveau projet , entrez un nom de projet. Sous Framework, sélectionnez .NET Framework 4.7.2 ou une version ultérieure. Appuyez sur Créer.

Recharger des données à partir d’Azure App Configuration

  1. Cliquez avec le bouton droit sur votre projet, puis sélectionnez Gérer les packages NuGet. Sous l’onglet Parcourir, recherchez et ajoutez la dernière version du package NuGet suivant à votre projet.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Ouvrez Program.cs et ajoutez les espaces de noms suivants.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Ajoutez deux variables pour stocker les objets liés à la configuration.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Mettez à jour la méthode Main pour vous connecter à App Configuration avec les options d’actualisation spécifiées.

    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();
    }
    

    Dans la méthode ConfigureRefresh, une clé de votre magasin App Configuration est inscrite pour la supervision des changements. La méthode Register a un paramètre booléen facultatif refreshAll qui permet d’indiquer si toutes les valeurs de configuration doivent être actualisées en cas de changement de la clé inscrite. Dans cet exemple, seule la clé TestApp:Settings:Message est actualisée. La méthode SetCacheExpiration spécifie le temps minimum qui doit s'écouler avant qu'une nouvelle requête puisse être adressée à App Configuration pour rechercher les changements de configuration. Dans cet exemple, vous remplacez le délai d’expiration par défaut de 30 secondes par un délai de 10 secondes à des fins de démonstration.

  5. Ajoutez une méthode appelée PrintMessage() qui déclenche une actualisation des données de configuration à partir d’App Configuration.

    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!");
    }
    

    L’appel de la méthode ConfigureRefresh seule n’entraîne pas l’actualisation automatique de la configuration. Vous appelez la méthode TryRefreshAsync à partir de l’interface IConfigurationRefresher pour déclencher une actualisation. Cette conception consiste à éviter les demandes envoyées à App Configuration même lorsque votre application est inactive. Vous pouvez inclure l’appel de TryRefreshAsync quand vous considérez que votre application est active. Par exemple, cela peut se produire quand vous traitez un message entrant, une commande ou l’itération d’une tâche complexe. Il peut également s’agir d’un minuteur si votre application est active en permanence. Dans cet exemple, vous appelez TryRefreshAsync quand vous appuyez sur la touche Entrée. Notez que, même en cas d’échec de l’appel de TryRefreshAsync pour une raison quelconque, votre application continue à utiliser la configuration mise en cache. Une autre tentative a lieu quand le délai d’expiration configuré pour le cache est écoulé et que l’appel de TryRefreshAsync est à nouveau déclenché par l’activité de votre application. L’appel de TryRefreshAsync est une non-opération avant l’expiration du délai configuré pour le cache. Son impact sur les performances est donc minimal, même si l’appel est effectué fréquemment.

Générer et exécuter l’application localement

  1. Définissez une variable d’environnement nommée ConnectionString sur la chaîne de connexion de la clé en lecture seule obtenue lors de la création du magasin App Configuration.

    Si vous utilisez l’invite de commandes Windows, exécutez la commande suivante :

    setx ConnectionString "<connection-string-of-your-app-configuration-store>"
    

    Si vous utilisez Windows PowerShell, exécutez la commande suivante :

    $Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
    
  2. Redémarrez Visual Studio pour que la modification soit prise en compte.

  3. Appuyez sur Ctrl + F5 pour générer et exécuter l’application console.

    Lancement local de l’application

  4. Dans le portail Azure, accédez à l’Explorateur de configurations de votre magasin App Configuration, puis mettez à jour la valeur de la clé suivante.

    Clé Valeur
    TestApp:Settings:Message Données issues d’Azure App Configuration - Mise à jour
  5. De retour dans l’application en cours d’exécution, appuyez sur la touche Entrée pour déclencher une actualisation et afficher la valeur mise à jour dans l’invite de commandes ou dans la fenêtre PowerShell.

    Actualisation locale de l’application

    Notes

    Étant donné que le délai d’expiration du cache a été défini sur 10 secondes à l’aide de la méthode SetCacheExpiration lors de la spécification de la configuration de l’opération d’actualisation, la valeur du paramètre de configuration ne sera actualisée que si 10 secondes se sont écoulées depuis la dernière actualisation de ce paramètre.

Nettoyer les ressources

Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.

Important

La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
  3. Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.

Étapes suivantes

Dans ce tutoriel, vous avez permis à votre application .NET Framework d’actualiser dynamiquement les paramètres de configuration à partir d’App Configuration. Pour savoir comment activer la configuration dynamique dans une application web ASP.NET (.NET Framework), passez au tutoriel suivant :

Pour savoir comment utiliser une identité managée Azure de façon à simplifier l’accès à App Configuration, passez au tutoriel suivant :