Configuration des applications C# (.NET) : guide complet
La configuration est l'un des aspects clés du développement d'applications modernes en C# (.NET). Elle permet de séparer les paramètres de fonctionnement du programme du code, rendant l'application flexible, portable et sécurisée. Dans cet article, nous allons détailler la bibliothèque Microsoft.Extensions.Configuration — l'outil principal pour gérer la configuration dans .NET Core et .NET 5/6/7/8+.
Pourquoi la configuration est-elle nécessaire ?
Au lieu de chaînes de connexion, d'URL ou de clés API codées en dur, la configuration permet de stocker ces données dans des fichiers (JSON, XML, INI), des variables d'environnement ou des secrets. Cela simplifie le déploiement dans différents environnements (dev, staging, prod) et améliore la sécurité.
Composants principaux de la bibliothèque
- IConfiguration — interface représentant une arborescence unique de paramètres.
- IConfigurationBuilder — constructeur qui assemble la configuration à partir de diverses sources.
- ConfigurationRoot — objet racine implémentant
IConfiguration. - Source Providers — fournisseurs de données : JSON, XML, INI, Environment Variables, Command Line, Memory, Custom.
Installation de la bibliothèque
La bibliothèque fait partie du SDK .NET, donc pour la plupart des projets, aucune installation supplémentaire n'est nécessaire. Cependant, pour travailler avec des fichiers JSON dans des applications console, il faut ajouter le package :
dotnet add package Microsoft.Extensions.Configuration.JsonExemple de base : lecture depuis appsettings.json
Créons un fichier appsettings.json :
{ "AppSettings": { "SiteName": "PythonLib", "Version": "1.0", "Logging": { "Level": "Information", "File": "logs/app.log" } }}Lisons-le maintenant dans une application console :
using Microsoft.Extensions.Configuration;
class Program{ static void Main() { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
IConfiguration config = builder.Build();
string siteName = config["AppSettings:SiteName"]; string logLevel = config["AppSettings:Logging:Level"];
Console.WriteLine($"Site : {siteName}, Niveau de log : {logLevel}"); }}Utilisation de plusieurs sources
L'un des principaux avantages de Microsoft.Extensions.Configuration est la prise en charge des chaînes de sources. La dernière source ajoutée a la priorité la plus élevée. Une chaîne typique :
appsettings.json— paramètres de base.appsettings.{Environment}.json— paramètres pour un environnement spécifique (Development, Production).Environment Variables— surcharge pour CI/CD et Docker.Command Line Arguments— pour des surcharges temporaires au lancement.
Exemple de configuration de la chaîne :
var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true) .AddEnvironmentVariables() .AddCommandLine(args);Travail avec les sections et configuration fortement typée
Pour plus de commodité, il est possible de lier les sections de configuration à des classes POCO. Définissons une classe :
public class AppSettings{ public string SiteName { get; set; } public string Version { get; set; } public LoggingSettings Logging { get; set; }}
public class LoggingSettings{ public string Level { get; set; } public string File Aussi dans la bibliothèque
Jetons JWT en Kotlin : Guide complet avec exemples de code
Client HTTP pour JavaScript (Node.js) : top bibliothèques pour travailler avec les API
Parsing HTML en Kotlin : jsoup, ktor, khtml et autres outils
Travailler avec XML en PHP : analyse, création et traitement des données
Journalisation pour Swift (iOS/macOS) : meilleures bibliothèques et solutions