这些值是否属于配置文件或数据库?

时间:2008-10-21 21:08:41

标签: asp.net web-config configuration-files

我在ASP.NET configSections部分中为每个“模块”存储了多个值。我一直在想它们是否属于这些文件。

背景知识:这些是部署的Web应用程序的多个实例。所有都使用相同的数据库,但有自己的设置。

我确信开发和生产之间的差异在配置文件中。我知道的一些值应该包括:连接字符串,要使用的提供程序,设置调试等。

我已经使用自己的规则和方法将所有常见的部分分解出来。剩下的部分是每个站点中每个模块的杂项设置。我不确定的一些选项包括:

  • 对于ModuleA,显示/隐藏选项
  • 对于ModuleB,该字段使用的术语是什么
  • 对于ModuleC,允许最终用户执行X操作

4 个答案:

答案 0 :(得分:4)

嗯,这些听起来像您可能希望能够在运行时为您的应用程序更改而无需修改app.config。我想遵循的一条经验法则是配置中的任何内容都应该用于部署或服务器配置。在这种情况下,您的设置似乎正在修改应用程序行为,因此如果不是很多努力,我可能会将它们移动到数据库中。

答案 1 :(得分:1)

ModuleA和ModuleC听起来像是用户个人资料信息。如果用户不是动态的,但您可以添加以后的功能,那么可以将它们移动到数据库。

我已经编写过将ModuleB放入数据库的应用程序。像表格标签等的东西很容易进入数据库。如果以后有人决定在所有表单标签中添加或删除冒号,那么如果所有文本都存储在数据库中,那么这很容易。

答案 2 :(得分:1)

考虑需要编辑其中一个值时的情况。

如果值在web.config中,将更改保存到该文件将导致应用程序回收,不方便地丢弃当前用户。如果你的应用程序只在工作时间内使用的内部网上(尽管你可能会从那个留下来工作到很晚的人那里得到一个愤怒的电话),这并不是一个问题。但在国际用户的公共网站上可能存在问题。

如果值在数据库中,则以这种方式对应用程序的处理没有影响。

无论哪种方式,都要考虑这些值是否缓存在应用程序的RAM中(web.config是)。数据库值是应用程序变量还是缓存?如果是这样,您可能不知道何时会发生更改。除非您想重新启动应用程序。

并且,相应的管理员需要哪些不同的访问权限才能进行更改?有人必须能够访问Web服务器才能更改web.config,或访问数据库(和表)来更改它。

答案 3 :(得分:0)

一些问题:为什么对应用程序的多个实例使用相同的数据库,这将如何影响维护? 将来是否可以选择拆分数据库以提高性能?配置模型是否支持比基于数据库的更好的变更?

换句话说,你必须考虑很多变量才能回答你的问题: - )