我打算将我的所有配置设置存储在应用程序的app.config部分(使用ConfigurationManager.AppSettings
类)。当用户使用应用程序的UI更改设置(单击复选框,选择单选按钮等)时,我打算将这些更改写入AppSettings
。与此同时,在程序运行时,我打算不断地从一个不断处理数据的进程中访问AppSettings
。通过用户界面对设置进行的更改需要实时影响数据处理,这就是为什么该过程将持续访问AppSettings
。ConfigurationManager.AppSettings性能问题
这是一个关于性能的好主意吗?在编写.Net应用程序时,使用AppSettings
应该是“正确的方式”来存储和访问配置设置,但我担心这种方法不适用于恒定负载(至少在不断读取设置的情况下)。
如果有人有这方面的经验,我会非常感激的输入。
更新:我应该澄清几点。
这不是一个Web应用程序,因此将数据库连接到应用程序可能会过度简单地用于存储配置设置。这是一个Windows窗体应用程序。
根据MSDN文档,ConfigurationManager
不仅用于存储应用程序级别设置,还用于存储用户设置。 (尤其重要,如果,例如,应用程序安装的部分信任的应用程序。)
更新2:我接受lomaxx的答案,因为Properties
确实看起来像一个很好的解决方案,而无需添加任何附加层到我的应用程序(如数据库)。使用属性时,它已经完成了其他人建议的所有缓存。这意味着任何更改和后续读取都在内存中完成,使其非常快速。当您明确告诉它时,属性只会将更改写入磁盘。这意味着我可以在运行时即时更改配置设置,然后在程序退出时只做最后的保存。
只是为了验证它实际上能够处理我需要的负载,我在我的笔记本电脑上做了一些测试,并且能够使用属性每秒执行750,000次读取和7,500次写入。这是远远超出我的应用程序将有史以来甚至接近需要我觉得使用属性相当安全,而不影响性能。