ConfigurationManager.AppSettings性能问题

Dyl*_*ett 25 .net c# performance configuration properties

我计划将所有配置设置存储在我的应用程序的app.config部分(使用ConfigurationManager.AppSettings该类).当用户使用应用程序的UI更改设置(单击复选框,选择单选按钮等)时,我计划将这些更改写入AppSettings.同时,在程序运行的同时,我计划AppSettings从一个不断处理数据的过程中不断访问.通过UI对设置的更改需要实时影响数据处理,这就是进程将AppSettings不断访问的原因.

这是一个关于性能的好主意吗?AppSettings在编写.Net应用程序时,使用应该是存储和访问配置设置的"正确方法",但我担心此方法不适用于恒定负载(至少在设置不断读取方面).

如果有人有这方面的经验,我将非常感谢输入.

更新:我应该澄清几点.

这不是一个Web应用程序,因此将数据库连接到应用程序可能仅仅是为了存储配置设置而过度杀伤.这是一个Windows窗体应用程序.

根据MSDN文档,ConfigurationManager不仅用于存储应用程序级别设置,还用于存储用户设置.(例如,如果将应用程序安装为部分信任应用程序,则尤为重要.)

更新2:我接受了lomaxx的答案,因为Properties它确实看起来像一个很好的解决方案,而无需向我的应用程序添加任何其他层(例如数据库).使用"属性"时,它已经完成了其他人建议的所有缓存.这意味着任何更改和后续读取都在内存中完成,使其非常快.属性仅在您明确告知磁盘时将更改写入磁盘.这意味着我可以在运行时动态更改配置设置,然后在程序退出时只进行最终保存到磁盘.

只是为了验证它实际上能够处理我需要的负载,我在笔记本电脑上做了一些测试,并且能够使用Properties执行750,000次读取和每秒7,500次写入.这是迄今为止,超出我的是什么应用程序将永远甚至接近需要,我觉得在使用性能,而不会影响性能相当安全的.

lom*_*axx 10

因为你正在使用winforms应用程序,如果它在.net 2.0中,实际上有一个用于此目的的用户设置系统(称为属性).MSDN上的这篇文章对此有一个很好的介绍

如果你仍然担心性能,那么看一下类似于SQLite的SQL Compact Edition,但是我发现微软的产品与winforms非常相配,甚至还能让它与Linq一起使用