【问题标题】:Storing configuration settings in web.config or database在 web.config 或数据库中存储配置设置
【发布时间】:2010-02-15 15:42:18
【问题描述】:

存储网站模块的各种配置设置的最佳位置。

创建映射 web.config 文件中设置的类(继承 ConfigurationSection)?
或者创建一些与数据库一起使用的 DAL 和 BLL 类?

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    我使用了一种简单的启发式方法将每个配置变量分为以下四个类别之一:

    1. 编译时配置(更改与代码更改一起完成)- 如果可能,则在代码或程序集中(作为嵌入式资源),否则在 web.config 中
    2. 服务器实例特定配置(SQL 连接字符串、本地文件路径)- 在 web.config 中
    3. 应用程序(数据库)配置(功能选择和其他很少更改的全局应用程序设置,如果有的话) - 在数据库中但没有 UI
    4. 应用程序配置 - 在数据库中,可通过管理 UI 访问

    【讨论】:

      【解决方案2】:

      将配置设置存储在 Web.config 中的效果是,如果您修改 web.config 文件,您的应用程序将重新启动并且新设置将立即生效。 但是,如果您在多台机器上运行应用程序,则需要更新每台机器。

      如果您将配置设置存储在数据库中,您将需要手动重新启动您的 Web 应用程序或具有允许应用程序重新读取设置的功能(例如管理页面/站点)。

      【讨论】:

        【解决方案3】:

        要真正回答这个问题:

        基本信息必须本地存储在 web.config 中(连接字符串等)

        除此之外,其他信息可以存储在任一位置。

        将它放在数据库中意味着编写管理页面来控制信息比直接编辑 web.config 文件更容易。

        事情多久会改变一次?如果设置是一次性的,那么拥有管理页面将是矫枉过正,但如果正在进行更改(添加新用户、类别等),那么它们可能是一个好主意。

        还可以使用数据库中的数据对系统进行远程管理

        因此,如果没有关于您的申请的更多信息,我无法提出建议。

        【讨论】:

        • 我说的不是用户设置,我说的是管理员可以设置的站点配置。
        • 比如特定模块的数据库连接字符串、模块的缓存持续时间等
        • @luppi - 回答错误的问题。我现在已经更新了答案。
        【解决方案4】:

        在大多数情况下,每个页面上的每个模块都有单独的设置。因此,您必须将它们保存在数据库中。

        【讨论】:

          【解决方案5】:

          构建配置部分。它非常简单,适合您的需求。

          【讨论】:

            猜你喜欢
            • 2011-06-26
            • 2023-04-09
            • 2011-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多