2011-01-21 39 views
1

我正在寻找有关我应该在哪里存储应用程序配置数据和默认文本值的反馈,这些数据将具有最佳性能。例如,我一直坚持像默认URL值和web.config中的错误消息或应用程序指令的默认文本,但现在我想知道这是否会扩展....如果它甚至是正确的事情首先要做的事情。哪些性能更​​好 - 在AppSettings或数据库中配置?

回答

0

如果数据库是在同一台机器的性能差异可能会忽视,能。如果您需要通过电线连接到某个数据库,那么它很可能会比较慢,那么可以直接访问而不是太大的web.config。

我真的希望在这里保持简单,只需使用web.config即可。它可能已经被一些系统组件缓存在内存中。如果你觉得它太慢测量它,然后可能会去一个更复杂的解决方案。

话虽如此,你可以简单地读取应用程序启动时的所有配置并将其保存在内存中。这样,任何性能差异都会缓解到应用程序的启动时间。您还可以在启动时验证配置文件。

不确定您的默认设置,只是问问自己他们是否特定于环境,是否真的想要更改而不需要重新编译。作为配置文件,用例是什么?一些操作人员或开发人员是否会设置这些默认设置?你打算记录它们吗?你打算让你的应用程序对任何配置都健壮吗? 这些默认设置将用于多个环境/安装(例如用于本地化)吗?那么也许最好使用不同的独立文件,在需要时可以单独重新部署。

0

设置多久会发生变化?

如果他们永远不会改变,你可以将它们放在web.config中,并配置IIS,以便它不监视文件的变化。这将会导致一个小的启动罚款,但在此之后,不应该有性能损失。

但说实话,大概有几十个其他地方,以提高你开始担心在此之前 - 还记得,“Premature Optimization is the root of all evil” :)

+0

大多数设置可能不会更改太频繁,但多久未知。正如我下面所说的,我不是“担心”这个......我只是在寻找关于这个问题的反馈。 – Cognitronic 2011-01-21 16:15:35

3

正如前面提到的,这实在不应该事 - 设置,无论是在web.config或数据库中,应该是“只读”,然后缓存,所以这真的不重要。

我几乎可以保证你的代码的其他部分会比这慢得多。


作为一个侧面说明,而不是性能相关的,但是如果你需要担心的网站的正常运行时间,你可以在飞行数据库编辑配置,但改变的web.config将导致AppDomain重新启动和随后会议的损失。

+0

好吧,只是要清楚...我并不担心这一点,因为我只是在寻找有关其他人如何存储其配置数据的反馈。在初始载荷和后续载荷过程中,性能的差异会对我有什么影响。这个问题不关心我的代码的其他部分,因为它最后加起来......对吧? – Cognitronic 2011-01-21 16:13:03