2010-10-08 16 views
4

Après avoir construit un site Web décent en utilisant ASP.NET MVC, je suis sur le point de construire un "panneau d'administration" pour les utilisateurs dans le rôle "Admin" pour contrôler le site avec. Plus précisément, le site Web que j'ai créé est un site interne pour une entreprise et il consiste en un ensemble de mini-applications Web, dont chacune doit être configurée et/ou modifiée de temps en temps. Est-ce que Web.Config le fichier approprié pour stocker ces paramètres d'application?ASP.Net MVC: Où stocker les paramètres de l'application et du panneau d'administration? Web.config?

Devrait-il être dans un fichier XML séparé?

Une table DB (ou un ensemble de tables)?

Actuellement, je n'ai pas de DB disponible pour moi, mais peut-être à une date ultérieure je le ferai. Actuellement, je suis enclin à créer un fichier XML et stocker des valeurs là-bas. Est-ce une approche raisonnable? Ou est-ce que je manque quelque chose d'évident sur la façon de faire cela?

EDIT: Ok, voici ma couche d'abstraction (Interface):

public interface IAppSettings 
{ 
IQueryable<string> GetValues(string component, string setting); 
void SetValues(string component, string setting, List<string> values, bool append); 
} 

Je me dis que je peux lire/écrire à Web.Config, un autre XML, ou un DB de cette façon.

Qu'en pensez-vous?

Répondre

1

Je vous recommande un db. L'écriture de fichiers dans une application multi-utilisateur/multi-thread peut être difficile et des problèmes peuvent survenir si vous ne synchronisez pas l'accès à ces fichiers, sans parler de l'accès transactionnel si vous en avez déjà besoin. Il y a quelques légers NoSQL databases qui pourraient être extrêmement utiles et faciles à installer. Quoi que vous choisissiez, assurez-vous de créer des abstractions sur la couche d'accès aux données afin de passer facilement à une autre méthode comme une base de données SQL (après avoir essayé une base de données NoSQL, vous ne l'aurez probablement pas :-)) .

+0

Bon appel sur la couche d'abstraction. Je pensais la même chose: écrire une bonne définition d'interface. Je suis récemment tombé sur la zone "appSettings" de Web.Config, qui semble raisonnablement adaptée à la gestion et au stockage des paramètres d'application qui ne changent pas très fréquemment. Je pense donc que mon approche à court terme consiste à écrire une bonne définition d'interface puis à implémenter une classe concrète qui implémente cette interface et utilise le fichier web.config pour stocker mes données d'administration (pour le moment). Département informatique pour me donner ma propre base de données MS-SQL bientôt. – Pretzel

1

La question à poser ici est, en général, est-ce un ensemble de paramètres qui vont changer avec la base de code ou être modifiés par les utilisateurs? Si c'est le premier, XML est le chemin à parcourir - il peut facilement être contrôlé par la version avec le code. Si les utilisateurs le modifient, une base de données est une meilleure option.

+0

Ces paramètres sont susceptibles d'être modifiés par une très petite poignée d'utilisateurs dans le rôle "Admin". (Je pense au maximum à 3 ou 4 personnes.) Et même alors, les paramètres ne seront probablement modifiés que de temps en temps (peut-être une fois par mois, par un des administrateurs.) – Pretzel