哪个具有更好的性能 - 在AppSettings或数据库中配置?

时间:2011-01-21 15:03:34

标签: asp.net architecture configuration

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

4 个答案:

答案 0 :(得分:3)

如前所述,这确实无关紧要 - 无论是在web.config中还是在数据库中,这些设置应该是“只读一次”然后进行缓存,所以这真的不重要。

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


作为旁注,与性能无关,但如果您需要担心站点正常运行时间,可以动态编辑数据库中的配置,但更改web.config将导致appdomain重新启动并导致会话丢失

答案 1 :(得分:0)

如果是单个服务器设置(而不是Web场),则将其存储在Web.Config文件中。有一个新版本的Web Farm框架,您可以在此处查看该类型的方案的详细信息:

http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx

答案 2 :(得分:0)

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

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

说过你可以在应用程序启动时简单地读取所有配置并将其保存在内存中。这样,任何性能差异都可以缓解到应用程序的启动时间。您还可以获得在启动时验证配置文件的额外好处。

不确定您的默认值,但只是问问自己它们是否是特定于环境的,并且无需重新编译就是您想要更改的内容。作为配置文件,用例是什么?某些操作人员或开发人员是否会设置这些默认值?你打算记录它们吗?您是否要使您的应用程序对所配置的内容具有可靠性? 这些默认值是用于多个环境/安装(例如用于本地化)吗?那么也许最好使用一个不同的单独文件,您可以在需要时单独重新部署。

答案 3 :(得分:0)

设置多久会改变一次?

如果它们永远不会更改,您可以将它们放在web.config中,并配置IIS以使其不监视文件的更改。这将会带来一个小的启动惩罚,但在那之后应该没有性能损失。

但老实说,在你开始担心这个之前,可能还有很多其他地方需要改进 - 请记住,“Premature Optimization is the root of all evil”:)