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