6

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

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

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

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

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

4 回答 4

4

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

于 2008-10-21T21:14:01.370 回答
1

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

我已经编写了将 ModuleB 也放入数据库的应用程序。诸如表单标签等之类的东西可以很容易地进入数据库。如果以后有人决定为所有表单标签添加或删除冒号,那么如果所有文本都存储在数据库中,那将是一件非常容易的事情。

于 2008-10-21T21:14:09.187 回答
1

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

如果该值在 web.config 中,将更改保存到该文件将导致应用程序回收,不方便地丢弃当前用户。如果您的应用程序位于仅在工作时间使用的 Intranet 上,则问题不大(尽管您可能会接到工作迟到的人的愤怒电话)。但在具有国际用户的公共网站上可能存在问题。

如果该值在数据库中,那么它不会以这种方式对应用程序的处理产生影响。

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

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

于 2008-10-21T21:15:29.043 回答
0

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

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

于 2008-10-21T21:29:38.000 回答