Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is reading app.config expensive?

No question I am yet to be hit by any read speed bottleneck. I am asking to know; if reading app.config frequently is a bad programming choice. I have known of database operations getting expensive.

In my case I am not reading my own application's app.config, but of another project's, like this:

private string GetAppConfigValue(string key) {     ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();     fileMap.ExeConfigFilename = GetConfigFilePath();     Configuration appConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);     return appConfig.AppSettings.Settings[key].Value; } 

Scenario: I have a manager class (and only one such class) where I have to read few values (3 to 4) from a config file specified by a physical path, but many times. Need I have few member variables to store the values from app.config file? What would be the best approach. Thanks.

like image 276
nawfal Avatar asked Mar 05 '12 15:03

nawfal


People also ask

Do I need app config?

config are only required, if you have coded your application in such a way that it is explicitly dependent on it. If you have not done this, or have put error handling/default values or actions in place where it can't read the config file, one would assume your application could run without it.

When should I use app config?

App. Config is an XML file that is used as a configuration file for your application. In other words, you store inside it any setting that you may want to change without having to change code (and recompiling). It is often used to store connection strings.

Is app config the same as web config?

Web. Config is used for asp.net web projects / web services. App. Config is used for Windows Forms, Windows Services, Console Apps and WPF applications.


1 Answers

I'm sure that all configuration files(web.config or app.config) are cached by default, so you don't need to create a static class that holds all values or be afraid that the files are accessed permanently.

Here is some reading:

  • Web.Config is Cached
  • ConfigurationManager.RefreshSection Method
  • Application Configuration Files Explained
  • ASP.NET Configuration Overview

Regarding to your requirement to access another application's config file:

MSDN: "These methods(note: for client applications: ConfigurationManager.GetSection) provide access to the cached configuration values for the current application, which has better performance than the Configuration class."

In other words: Yes, you should cache it when it's not your own app's config file.

like image 164
Tim Schmelter Avatar answered Sep 28 '22 16:09

Tim Schmelter