【发布时间】:2010-09-05 11:20:09
【问题描述】:
我计划将我的所有配置设置存储在我的应用程序的 app.config 部分(使用 ConfigurationManager.AppSettings 类)。当用户使用应用程序的 UI 更改设置时(单击复选框、选择单选按钮等),我计划将这些更改写到 AppSettings。同时,当程序运行时,我计划从一个不断处理数据的进程中不断地访问AppSettings。通过 UI 更改设置需要实时影响数据处理,这就是为什么进程会不断访问AppSettings。
在性能方面这是个好主意吗?在编写.Net应用程序时,使用AppSettings应该是存储和访问配置设置的“正确方法”,但我担心这种方法不适合持续加载(至少在不断读取的设置方面) .
如果有人有这方面的经验,我将不胜感激。
更新:我应该澄清几点。
这不是一个 Web 应用程序,因此将数据库连接到应用程序可能只是为了存储配置设置而过度使用。这是一个 Windows 窗体应用程序。
根据 MSDN 文档,ConfigurationManager 不仅用于存储应用程序级别设置,还用于存储用户设置。 (例如,如果应用程序作为部分信任应用程序安装,则尤其重要。)
更新 2: 我接受了 lomaxx 的回答,因为 Properties 确实看起来是一个不错的解决方案,而无需向我的应用程序(例如数据库)添加任何额外的层。使用属性时,它已经完成了其他人建议的所有缓存。这意味着任何更改和后续读取都在内存中完成,因此速度非常快。属性仅在您明确告知时才将更改写入磁盘。这意味着我可以在运行时即时更改配置设置,然后仅在程序退出时才最终保存到磁盘。
为了验证它确实能够处理我需要的负载,我在笔记本电脑上进行了一些测试,使用 Properties 每秒可以进行 750,000 次读取和 7,500 次写入。这远远超出了我的应用程序永远甚至接近需要的程度,我觉得在不影响性能的情况下使用属性非常安全。
【问题讨论】:
标签: c# .net performance configuration properties