2012-02-23 5 views
4

J'ai quelques paramètres globaux Par exemple, certains ci-dessous sontOù stocker les paramètres globaux de l'application?

ShortLeaveAllowedInOneDay = 2 
LeaveAllowedInMonth = 3 

Je options suivantes pour stocker ces paramètres globaux

1-magasin dans le tableau de base de données
2-Store dans le fichier Webconfig
3-Stocker en classe comme const filed
4-In fichier XML

Pourriez-vous s'il vous plaît me suggérer que l'on est meilleure approche et pourquoi

J'utilise Asp.net MVC3 avec SQLServer 2005

Répondre

9

Il dépend sur vos besoins, chacune de ces options a ses propres avantages et inconvénients. Il a essayé d'en énumérer quelques-unes:

1.Stocker dans le tableau de base de données
Avantages:

  • relativement facile à lire les paramètres.
  • Possibilité d'écrire/de mettre à jour les paramètres.
  • L'accès à la base de données est rapide.
  • Les mises à jour des valeurs de base de données sont immédiatement disponibles.
  • DB peut être partagé entre plusieurs instances dans un environnement en cluster.

Inconvénients:

  • Plus infrastructure nécessaire que le reste des options (à savoir tables, accès db etc.).
  • Si cela est fait de façon incorrecte DB IO peut devenir un problème. (Peut être résolu avec des stratégies de mise en cache)



2. Magasin dans le fichier web.config
Avantages:

  • paramètres simples pour ajouter et d'accès.

Inconvénients:

  • Les modifications apportées au web.config peut entraîner le pool d'applications pour redémarrer.
  • Les paramètres ne sont généralement pas cryptés.
  • Dans un environnement en cluster, le fichier doit être synchronisé avec les autres instances.
  • Généralement, vous devez gérer les types de données de chaînes et les entrées utilisateur invalides possibles lorsque les paramètres sont définis.



3. Magasin en classe comme champ const
Avantages:

  • Très simple à utiliser.
  • Peut travailler avec des types statiques.
  • Bonne première étape vers la refonte des paramètres dans l'une des autres options.

Inconvénients:

  • Nécessite la reconstruction des paramètres pour changer.


4. Dans le fichier XML
Avantages:

  • pratique pour stocker les paramètres complexes une telle hiérarchies.
  • Les paramètres de configuration XML personnalisés peuvent être intégrés dans le fichier web.config. (L'option populaire voit log4net comme exemple)
  • Les mises à jour des fichiers de configuration peuvent être effectuées sans redémarrer le pool d'applications.
  • Un XSD peut appliquer la validité des paramètres dans le fichier (la structure et des types de données)

Inconvénients:

  • Il est XML. Non vraiment lisible par l'homme, les formats comme YAML améliore cela.
  • Implémentation requise pour analyser XML pour la lecture et l'écriture des paramètres.
+0

Grande réponse complète! – jorgebg

0

Stockage des variables globales dans le fichier web.config est une tâche très commune. Le stockage de valeurs dans votre fichier web.config est extrêmement utile lorsqu'une base de données peut être surchargée et que vous n'avez pas besoin d'un fichier externe distinct.

Lire le fichier .xml plusieurs fois pour chaque cycle de vie de la page serait TRÈS mauvais pour les performances.

Je voudrais vraiment aller pour web.config.

1

Si vous avez besoin qu'ils soient configurés par un utilisateur de votre logiciel je ne ferais pas l'option 3. Si ce sont des paramètres que vous définissez en tant que programmeur et ne vous attendez pas à les modifier lorsque votre application est en production fais ça.

Je dirais que les options 4 et 2 sont fondamentalement les mêmes, conceptuellement, et c'est la préférence personnelle que choisir. Personnellement, je tiens à définir un custom configuration section et ensuite avoir cette section définie dans son propre fichier .config (this montre comment faire cela) de sorte que vous n'avez pas un web.config vraiment énorme que l'utilisateur doit naviguer.

Je choisirais l'option 1 si j'avais un scénario dans lequel plusieurs composants avaient besoin d'accéder à la même configuration. Si tout ce que vous construisez est une seule application Web, cela ne me semble pas nécessaire mais si, par exemple, vous avez une application Web et une autre application client et que vous avez besoin d'accéder à la base de données, la configuration est stockée. un bon choix.

1

Ajouter une session AppSettings dans le fichier de configuration Web, qui est accessible à partir du code directement comme:

System.Configuration.ConfigurationManager.AppSettings["ShortLeaveAllowedInOneDay "]; 

EDIT: et le fichier confir ressemblerait à ceci:

<appSettings> 

<add key="ShortLeaveAllowedInOneDay " value="2" /> 

</appSettings> 
0

Non l'approche est intrinsèquement meilleure que les autres. La meilleure approche dépend entièrement de vos besoins en matière de sécurité, d'évolutivité, de flexibilité, de lecture seule et d'écriture, de complexité de configuration, etc.

0

Vous pouvez stocker la variable dans le fichier Web.config.

0

Je serai plus pratique. Deux cas de base.

  1. Valeurs/paramètres que les changements et les critiques pour démarrer/exécuter/initialiser le programme
  2. Les valeurs sont le changement offensent, ou ils sont différents pour chaque utilisateur.

Vous stockez les variables initiales sur web.config, et toutes les autres sur la base de données. Si vous n'avez pas de base de données, alors tout ce qui est disponible, comme le fichier XML.

Questions connexes