2008-09-17 5 views
1

Utilisation d'un fichier de configuration Je souhaite activer et désactiver des fonctions telles que la journalisation (tierce partie) et l'utilisation d'un cache dans un site Web C#. La solution ne devrait pas être limitée à la journalisation et à la mise en cache en particulier, mais plus générale, afin que je puisse l'utiliser également pour d'autres choses. J'ai un fichier xml de configuration dans lequel je peux affirmer que la journalisation et la mise en cache doivent être activées ou désactivées (cela peut aussi être dans le Web.Config, ce n'est pas le cas en ce moment) qui se traduira par exemple par un bool logging et bool caching qui sont true ou false.Activation conditionnelle des actions dans le site Web C# ASP.NET

La question est de cette partie: Ce que je peux faire est de préfixer chaque déclaration concernant l'enregistrement/mise en cache avec if (logging) et if (caching). Quelle est la meilleure façon de programmer cela? Y a-t-il aussi un terme de programmation pour ce genre de problème? Peut-être que les attributs sont aussi une voie à suivre? Pourquoi ne pas simplement utiliser le web.config et la fonctionnalité System.Configuration qui existe déjà?

Répondre

2

Je suis curieux de savoir quel type d'instructions de journalisation/mise en cache vous avez? Si vous avez une classe qui fait WriteLog ou StoreCahce ou quoi que ce soit ... pourquoi ne pas simplement mettre if (journalisation) dans la méthode WriteLog. Il semble que si vous mettez toutes vos méthodes de mise en cache de journalisation en une seule fois et que cette classe sache si la journalisation/mise en cache était active, vous pouvez enregistrer une série d'instructions If à chaque instance.

+0

Probablement c'est le moyen le plus simple de le résoudre, d'écrire une classe wrapper ou peut-être même un délégué qui vérifie. –

+0

Je me demandais si certaines personnes pourraient aussi trouver des choses comme des attributs. –

6

Votre application Web va quand même analyser WebConfig à chaque chargement de page, de sorte que le surcoût lié à l'ajout d'un autre fichier de configuration XML semble être excessif lorsque vous pouvez simplement définir votre propre section sur la configuration existante.

+0

Oui, c'est possible, mais j'étais plus curieux de savoir comment gérer ces conditions dans le code. –

+0

Changé la question en conséquence, merci pour l'instant. –

+1

En tant que FYI - le Web.Config est seulement analysé une fois sur AppStart et encore OnFileChange – stephbu

0

Pour plus d'informations sur la configuration du cache, consultez http://msdn.microsoft.com/en-us/library/ms178606.aspx.

+0

Désolé, je pense que je n'ai pas assez formulé la question. La solution que je cherche n'est pas la mise en cache en particulier, mais la façon de programmer ce genre de cas en général. J'ai changé la question. –

0

Je suis d'accord avec foxxtrot, vous voulez utiliser le web.config et ajouter dans un appsetting ou deux pour contenir les valeurs.

Ensuite, pour l'implémentation lors de la vérification, oui, utilisez simplement un si pour voir si vous avez besoin de faire l'action. Je recommande fortement de centraliser vos classes de journalisation pour éviter la duplication du code.

0

Vous pouvez utiliser un conteneur d'injection de dépendances et charger différents objets de journalisation et de mise en cache en fonction de la configuration. Si vous souhaitez activer la journalisation, vous devez spécifier un objet/fournisseur de journalisation actif dans config; Si vous voulez le désactiver, vous pouvez faire en sorte que le DI injecte un fournisseur de journalisation "fictif" qui n'a rien enregistré mais qui est revenu immédiatement. Je préférerais un design plus simple tel que celui proposé par @foxxtrot, mais l'exécution de composants utilitaires est l'une des choses que DI peut faire pour vous.

1

Vous pouvez consulter la bibliothèque Microsoft Enterprise. Il comporte des choses comme la journalisation et la mise en cache. La journalisation est rendue facile par le fait que vous incluez toujours le code de journalisation, mais la journalisation réelle en dessous est contrôlée par les paramètres.

http://msdn.microsoft.com/en-us/library/cc467894.aspx

Vous pouvez trouver d'autres trucs cool dans le groupe des modèles et des pratiques.

+0

+1 pour les garçons de P & P - il y a un bloc d'application complet autour de la mise en cache et de la journalisation – stephbu

Questions connexes