Question

J'ai stocké plusieurs valeurs dans les sections configSections d'ASP.NET pour chaque "module". Je me suis demandé s'ils appartenaient même à ces fichiers.

L’arrière-plan est à: Il s’agit de plusieurs instances de l’application Web déployée. Tous utilisent la même base de données mais ont leurs propres paramètres.

Je suis sûr que les différences entre développement et production vont dans les fichiers de configuration. Certaines des valeurs que je connais devraient inclure: les chaînes de connexion, les fournisseurs à utiliser, la configuration du débogage, etc.

J'ai factorisé tous les éléments communs dans des classes avec leurs propres règles et méthodes. Les pièces restantes sont des paramètres divers pour chaque module de chaque site. Certaines des options dont je ne suis pas sûr incluent:

  • Pour ModuleA, option Afficher / Masquer
  • Pour ModuleB, quelle est la terminologie à utiliser pour ce champ
  • Pour ModuleC, autoriser l'utilisateur final à exécuter l'action X
Était-ce utile?

La solution

Mmm, ces sons ressemblent à des choses que vous pourriez vouloir pouvoir modifier au moment de l'exécution de votre application sans avoir à modifier le fichier app.config. Une règle de base que j'aime suivre est que tout ce qui est dans la configuration devrait être pour le déploiement ou la configuration du serveur. Dans ce cas, vos paramètres semblent modifier le comportement de l'application et je les déplacerais donc probablement dans la base de données si cela ne demande pas beaucoup d'effort.

Autres conseils

ModuleA et ModuleC semblent être des informations de profil d'utilisateur. S'ils ne sont pas dynamiques par utilisateur, mais que vous puissiez ajouter des fonctionnalités ultérieures, déplacez-les peut-être vers une base de données.

J'ai écrit des applications où ModuleB aurait également été placé dans une base de données. Des choses comme les étiquettes de formulaire, etc. peuvent facilement aller dans une base de données. Si, à une date ultérieure, quelqu'un décide d'ajouter ou de supprimer des deux-points à toutes les étiquettes de formulaire, il est très facile à faire si tout le texte est stocké dans une base de données.

Pensez au cas où vous auriez besoin de modifier l'une des valeurs.

Si la valeur est dans web.config, l'enregistrement de la modification dans ce fichier entraînera le recyclage de l'application, ce qui entraînera un rejet inutile des utilisateurs actuels. Ce n'est pas vraiment un problème si votre application est sur un intranet uniquement utilisé pendant les heures de bureau (même si vous pouvez recevoir un appel en colère de la part du gars qui est resté au travail en retard). Mais potentiellement un problème sur un site Web public avec des utilisateurs internationaux.

Si la valeur est dans une base de données, cela n'aura aucun impact sur le traitement de l'application.

Quoi qu'il en soit, déterminez si les valeurs sont mises en cache dans la RAM de l'application (web.config est). Les valeurs de la base de données sont-elles dans une variable d'application ou dans le cache? Si tel est le cas, vous ne pouvez pas savoir quand le changement aura lieu. Sauf si vous souhaitez redémarrer l'application.

Et quels droits d'accès et autorisations différents les administrateurs appropriés auraient-ils besoin pour effectuer les modifications? Quelqu'un devrait avoir accès au (x) serveur (s) Web pour changer web.config, ou à la base de données (et à la table) pour changer cela.

Quelques questions: Pourquoi utilisez-vous la même base de données pour plusieurs instances de l'application et comment cela va-t-il en assurer la maintenance? À l'avenir, sera-t-il possible de scinder la base de données afin d'améliorer les performances? Le modèle de configuration prend-il mieux en charge ce changement que celui basé sur une base de données?

En d'autres termes, vous devrez prendre en compte de nombreuses variables afin de répondre à votre question: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top