ConfigurationSection : Comment gérer le paramétrage applicatif

Pourquoi ce post ?

En tant que développeur .Net, vous savez que le paramétrage des applications métier se fait en général dans le fichier app.config pour les applications Windows, et web.config pour les applications web ou les web services.

Bien souvent, le premier reflèxe est d’ajouter ce type d’information dans le fichier de configuration :

<appSettings>
 <add key="MonParametre" value="19/10/2014" />
</appSettings>

Dans le code, on récupère la valeur grâce au ConfigurationManager :

string monparametre = ConfigurationManager.AppSettings.Get("MonParametre");
Console.Out.Write(monparametre);

Pas de problème cela fonctionne… sauf qu’on oublie bien souvent de gérer les cas d’erreur :

  • est-ce que le paramètre est bien dans le fichier de configuration ?
  • est-ce que la valeur est renseignée ?
  • est-ce que la valeur est bien dans le format attendu  ?

Dans ce post, je vous propose une solution, parmi d’autres, pour gérer de manière plus robuste vos paramètres applicatifs.

Les ConfigurationSection, ou « Comment structurer le paramétrage applicatif » ?

Le principe est simple : il faut implémenter une classe dont la sérialisation en XML est inscrite dans le fichier de configuration.

Le processus se base sur 2 étapes.

Étape 1 : Dériver ConfigurationSection et ConfigurationElement

Ces classes se trouvent dans le namespace « System.Configuration » :

  • ConfigurationSection : permet d’indiquer au framework qu’une portion du fichier de configuration contient un paramétrage applicatif personnalisé.
  • ConfigurationElement : il s’agit de l’implémentation du paramétrage applicatif. La structure XML dépend de cette implémentation.

Étape 2 : Intégration dans le fichier de configuration

Dans le cas de notre exemple, voilà à quoi ressemblera le paramétrage applicatif.

ficher-configuration

Quels intérêts ?

L’objectif est de fiabiliser le paramétrage, notamment en y intégrant des contrôles (plus ou moins évolués) dès le chargement du fichier de configuration. Par exemple, timeout= »unevaleur » génère une exception au chargement de la configuration.

exception-configuration

Un autre avantage de cette technique est de pouvoir manipuler la configuration applicative sous forme d’une arborescence d’objets plus ou moins complexes :

read-configuration

Quelques détails de l’implémentation

Voici les éléments principaux de l’implémentation.

La classe MyConfigSection est référencée dans la balise « section » du fichier de configuration. Dans notre cas, elle porte un seule propriété WebServiceConfigurationElement.

code-section-configuration

 A noter la décoration ConfigurationProperty qui a un double rôle ici :

  1. Gérer la sérialisation/désérialisation du paramétrage. « WebService » indique que l’information est stockée dans le nœud XML « <WebService> ».
  2. Apporter des premiers éléments de contrôle. « IsRequired=true » indique que le nœud « <WebService> » doit être présent.

La classe WebServiceConfigurationElement est le cœur de notre paramétrage.

code-element-configuration

On retrouve à nouveau la décoration ConfigurationProperty,  mais avec des attributs différents.

Dans cet exemple, les propriétés de la classe ne sont pas sérialisées sous forme de noeud XML, mais sous la forme d’attributs du noeud XML car ces propriétés sont des types de base (int, bool, string, etc).

Une autre décoration est présentée ici, et permet d’être plus pointu dans la validation en vérifier une plage de validité de la valeur entière.

Pour aller plus loin

A partir des éléments présentés dans cet article, vous pouvez mettre en place un paramétrage applicatif encore plus évolué en implémentant des listes de paramètres, ou des contrôles supplémentaires en utilisant les autres décorations disponibles (RegexStringValidatorAttribute) ou en développant vos propres règles.

À propos

ASI accompagne dans leur transformation digitale les organisations publiques et privées, ETI et Grands Groupes. Notre métier est de comprendre les besoins et d’identifier les usages à valeur ajoutée afin de concevoir, réaliser et déployer des solutions digitales qui améliorent l’Expérience des collaborateurs et des clients dans 3 grands domaines : - La Digitalisation des Processus et Services : conception et développement d’applications métiers, services clients, web et mobile… - La Data Intelligence : reporting et analyse, gouvernance des données, Big Data... - La Connaissance et la Collaboration : intranet/ portail collaboratif, réseau social d'entreprise, base de connaissances, CRM… Créée en 1993 et implantée dans 10 villes en France (Paris, Lyon, Marseille, Rennes, Brest, Nantes, Niort, Tours, Bordeaux et Toulouse), ASI compte 370 collaborateurs. Contactez-nous pour vos projets : 0806 700 800 (service gratuit + prix appel) / asicom@asi.fr

Tagged with: ,
Publié dans C#, DotNet

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Entrez votre adresse mail pour suivre ce blog et être notifié par email des nouvelles publications.

Rejoignez 694 autres abonnés

Suivre ASI sur Twitter
%d blogueurs aiment cette page :