45 votes

ConfigurationManager.AppSettings Caching

Nous savons que IIS caches ConfigurationManager.AppSettings afin qu'il lit le disque en une seule fois jusqu'à ce que le web.la config est changé. Cela est fait à des fins de performance.

Quelqu'un à:

http://forums.asp.net/p/1080926/1598469.aspx#1598469

a déclaré que .NET Framework ne pas faire la même chose pour l'app.config, mais il lit à partir du disque pour chaque demande. Mais je trouve cela difficile à croire, parce que ça serait plus lent. Veuillez me dire qu'il est mauvais ou je vais le corriger chaque Console/Windows Forms/Services Windows que j'ai écrit.

Mise à jour j'ai le regret que j'en ai mal interprété ce que disaient les gens dans le forum lié ci-dessus.

50voto

ZombieSheep Points 18967

Un test rapide semble montrer que ces paramètres ne sont chargés qu'au démarrage de l'application.

 //edit the config file now.
Console.ReadLine();

Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.WriteLine("Press enter to redisplay");

//edit the config file again now.
Console.ReadLine();
Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.ReadLine();
 

Vous verrez que toutes les sorties restent les mêmes.

3voto

Joe Points 60749

Il lit le fichier de configuration d'application (MyApp.exe.config) une fois au démarrage de l'application, comme on peut facilement être vérifié en changeant le fichier, tandis que l'application est en cours d'exécution.

Le commentaire dans le post sur le forum référencé par l'OP a été:

Les valeurs pour le Web.config sont stockées dans le cache/mémoire lorsque l' application démarre, c'est pourquoi l'application redémarre lorsque des modifications sont apportées à le web.config. Noter que ceci ne s'applique pour le Web.config, tout autre .les fichiers de configuration, vous pouvez utiliser sont accessibles à partir du disque par défaut

Je interpréter ce commentaire en ce sens que les fichiers de configuration autre que web.config dans un ASP.NET de l'application sont accessibles à partir du disque par défaut. Et de même, les fichiers de configuration autre que MyApp.exe.config dans un WinForms/Console de l'application sont accessibles à partir du disque par défaut.

Ce commentaire n'est pas en déclarant que MyApp.exe.la config est lu à partir du disque par défaut.

3voto

John Sonmez Points 3849

Peu importe que ce soit le cas ou non. Ne résolvez pas un problème de performances s'il n'y en a pas.

2voto

HAL9000 Points 653

AppSettings est mis en cache. Vous pouvez améliorer les performances en mettant davantage en cache pour limiter les recherches namevaluecollection.

Voir: Modèle de configuration statique DotNetPearls

1voto

dove Points 12456

Comme John le dit, ne passez plus de temps à ce sujet que si vous voyez réellement une baisse de performance.

De plus, je suis presque sûr que ces applications conservent la configuration en mémoire , et pour voir les changements dans une configuration, l'application devrait être redémarrée .

Pour en savoir plus sur les mystères restants.

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