3 votes

Comment stocker une liste de données statiques en C# ?

Je travaille sur un site web et je veux une liste déroulante pour afficher la liste des villes. Où dois-je stocker la liste des villes pour un accès plus rapide ? Je ne veux pas stocker ces données dans la base de données.

Est-ce une bonne idée de le stocker dans un fichier XML ?

3voto

Chris Gessler Points 11887

Je le stockerai dans le Cache, éventuellement avec une dépendance Sql ou une dépendance de fichier.

public DataTable GetCities(bool BypassCache)
{
   string cacheKey = "CitiesDataTable";
   object cacheItem = Cache[cacheKey] as DataTable;
   if((BypassCache) || (cacheItem == null))
   {
      cacheItem = GetCitiesFromDataSource();
      Cache.Insert(cacheKey, cacheItem, null,
      DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey), 
      TimeSpan.Zero);
   }
   return (DataTable)cacheItem;
}

Si vous voulez le stocker en XML, c'est bien aussi, mais vous devrez publier le fichier sur tous les serveurs de la ferme à chaque modification.

1voto

cdiggins Points 5549

Enregistrez-le dans un fichier texte. Cela permet d'éviter les frais généraux liés à l'analyse XML. Charger en utilisant File.ReadAllLines() .

0voto

Maxam Points 2682

Vous pouvez stocker la liste dans un fichier XML ou un autre format de fichier plat, mais je suppose que cela dépend des raisons pour lesquelles vous ne souhaitez pas la stocker dans la base de données.

Vous avez parlé d'un accès plus rapide, mais vous devriez peut-être développer ce point. Si vous voulez dire que vous ne voulez pas avoir à accéder à la base de données à chaque requête, avez-vous pensé à stocker la liste dans la base de données et à la mettre en cache au démarrage de l'application ? De cette façon, vous bénéficiez des avantages d'une base de données, mais vous ne payez les frais généraux qu'une seule fois.

Pour les petites applications, cependant, un fichier XML conviendrait parfaitement.

0voto

Jason Williams Points 31901

Si la liste ne change jamais, il suffit de la déclarer comme un tableau de chaînes de caractères dans votre code.

S'il est susceptible de changer occasionnellement, placez-le dans un fichier xml ou une table de base de données, mais mettez-le en cache lorsque vous l'avez lu afin qu'il ne doive être lu qu'une seule fois par session.

0voto

Muaz Othman Points 427

Je pense que XML est la meilleure solution, et qu'il serait préférable d'utiliser l'analyseur DOM plutôt que SAX.

Vous pouvez également charger le fichier dans la session chaque fois qu'il n'est pas chargé pour diminuer le nombre de lectures du XML, mais cela utilisera plus de RAM sur le serveur, veillez à ne pas charger de données inutiles car elles seront chargées dans la RAM du serveur pour chaque session. Vous pouvez ne les charger que pour les utilisateurs connectés si cela a un sens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X