Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les données d’App Configuration peuvent être chargées en tant que paramètres d’application dans une application .NET. Pour plus d’informations, consultez le guide de démarrage rapide. Toutefois, comme il est conçu par .NET, les paramètres de l’application ne peuvent s’actualiser qu’au 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 implémenter des mises à jour de configuration dynamique dans un service en arrière-plan .NET.
Dans ce tutoriel, vous allez apprendre à :
- Configurez votre service en arrière-plan .NET pour mettre à jour sa configuration en réponse aux modifications apportées à un magasin App Configuration.
- Utilisez la dernière configuration dans votre service en arrière-plan.
Prérequis
- Compte Azure avec un abonnement actif. Créez-en un gratuitement.
- Un magasin App Configuration, comme illustré dans le didacticiel pour la création d’un magasin.
- .NET SDK 6.0 ou ultérieur – également disponible dans Azure Cloud Shell.
Ajouter une clé-valeur
Ajoutez la clé-valeur suivante au magasin App Configuration et conservez les valeurs par défaut des options Étiquette et Type de contenu. Pour plus d’informations sur l’ajout de clés-valeurs à un magasin avec le Portail Azure ou l’interface CLI, consultez Création d’une clé-valeur.
| Clé | Valeur |
|---|---|
| TestApp:Settings:Message | Données provenant de Azure App Configuration |
Créer un service en arrière-plan .NET
Vous utilisez l’interface de ligne de commande .NET (CLI) pour créer un projet d’application .NET. L’avantage d’utiliser l’interface de ligne de commande .NET par rapport à Visual Studio est qu’elle est disponible sur les plates-formes Windows, macOS et Linux. Vous pouvez également utiliser les outils préinstallés qui sont disponibles dans Azure Cloud Shell.
Créez un nouveau dossier pour votre projet.
Dans le nouveau dossier, exécutez la commande suivante pour créer un projet de service en arrière-plan .NET :
dotnet new worker
Recharger des données à partir d’Azure App Configuration
Ajoutez des références au package NuGet
Microsoft.Extensions.Configuration.AzureAppConfigurationen exécutant la commande suivante :dotnet add package Microsoft.Extensions.Configuration.AzureAppConfigurationExécutez la commande suivante pour restaurer les packages de votre projet :
dotnet restoreOuvrez Program.cs et ajoutez les instructions suivantes :
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;Connectez-vous à App Configuration à l’aide de l’ID Microsoft Entra (recommandé) ou d’une chaîne de connexion.
Vous utilisez le
DefaultAzureCredentialpour vous authentifier auprès de votre magasin App Configuration. Suivez les instructions pour attribuer à votre identifiant le rôle de lecteur de données de configuration de l'application. Veillez à laisser suffisamment de temps pour que l’autorisation se propage avant d’exécuter votre application.// Existing code in Program.cs // ... ... var builder = Host.CreateApplicationBuilder(args); builder.Configuration.AddAzureAppConfiguration(options => { string endpoint = Environment.GetEnvironmentVariable("Endpoint"); options.Connect(new Uri(endpoint), new DefaultAzureCredential()); // Load all keys that start with `TestApp:` and have no label. .Select("TestApp:*") // Reload configuration if any selected key-values have changed. .ConfigureRefresh(refreshOptions => { refreshOptions.RegisterAll(); }); // Register the refresher so that the Worker service can consume it through DI builder.Services.AddSingleton(options.GetRefresher()); }); // The rest of existing code in Program.cs // ... ...Dans la
ConfigureRefreshméthode, vous appelez laRegisterAllméthode pour indiquer au fournisseur App Configuration de recharger l’intégralité de la configuration chaque fois qu’elle détecte une modification dans l’une des valeurs clés sélectionnées (celles commençant par TestApp : et sans étiquette). Pour plus d’informations sur la surveillance des modifications de configuration, consultez les meilleures pratiques pour l’actualisation de la configuration.Conseil / Astuce
Vous pouvez ajouter un appel à la méthode
refreshOptions.SetRefreshIntervalpour spécifier le temps minimal entre les actualisations de configuration. Dans cet exemple, vous utilisez la valeur par défaut de 30 secondes. Choisissez une valeur plus élevée si vous devez réduire le nombre de demandes adressées à votre magasin App Configuration.Ouvrez Worker.cs. Injectez
IConfigurationetIConfigurationRefresherau serviceWorkeret journaliser les données de configuration à partir d’App Configuration.public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _refresher; public Worker(ILogger<Worker> logger, IConfiguration configuration, IConfigurationRefresher refresher) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher)); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { // Intentionally not await TryRefreshAsync to avoid blocking the execution. _refresher.TryRefreshAsync(stoppingToken); if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation(_configuration["TestApp:Settings:Message"] ?? "No data."); } await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken); } } }L’appel de la méthode
ConfigureRefreshseule n’entraîne pas l’actualisation automatique de la configuration. Vous appelez la méthodeTryRefreshAsyncà partir de l’interfaceIConfigurationRefresherpour 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 deTryRefreshAsyncquand 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 appelezTryRefreshAsyncchaque fois que le service en arrière-plan est exécuté. Notez que, même en cas d’échec de l’appel deTryRefreshAsyncpour une raison quelconque, votre application continue à utiliser la configuration mise en cache. Une autre tentative est effectuée lorsque l’intervalle d’actualisation configuré est passé et que l’appelTryRefreshAsyncest déclenché à nouveau par l’activité de votre application. L’appel deTryRefreshAsyncest une opération sans opération avant l’expiration de l’intervalle d’actualisation configuré, de sorte que son impact sur les performances est minimal, même s’il est appelé fréquemment.
Générer et exécuter l’application localement
Définissez une variable d’environnement.
Définissez la variable d’environnement nommée Point de terminaison sur le point de terminaison de votre magasin App Configuration trouvé sous la Vue d’ensemble de votre magasin dans le portail Azure.
Si vous utilisez l’invite de commandes Windows, exécutez la commande suivante et redémarrez l’invite pour que la modification soit prise en compte :
setx Endpoint "<endpoint-of-your-app-configuration-store>"Si vous utilisez PowerShell, utilisez la commande suivante :
$Env:Endpoint = "<endpoint-of-your-app-configuration-store>"Si vous utilisez macOS ou Linux, exécutez la commande suivante :
export Endpoint='<endpoint-of-your-app-configuration-store>'Exécutez la commande suivante pour générer l’application.
dotnet buildLa génération terminée correctement, lancez la commande suivante pour exécuter l’application localement.
dotnet runLes sorties suivantes devraient s’afficher dans la console.
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 de la configuration de l'application Azure - Mise à jour Patientez quelques instants pour que la fenêtre d’intervalle d’actualisation passe. Les sorties de la console seront être modifiées.
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.
- Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
- Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
- Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
- Sélectionnez Supprimer le groupe de ressources.
- 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 activé votre service en arrière-plan .NET pour actualiser dynamiquement les paramètres de configuration à partir d’App Configuration. Pour savoir comment activer la configuration dynamique dans une application web ASP.NET, 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 :