【问题标题】:Config values in DB or File?在数据库或文件中配置值?
【发布时间】:2010-09-19 21:15:42
【问题描述】:

我有一些 asp.net web 应用程序的配置值。一旦系统上线,它们将由系统管理员维护。我应该将这些值存储在数据库中还是配置文件中?这类事情有最佳实践吗?

【问题讨论】:

    标签: asp.net configuration


    【解决方案1】:

    根据配置信息的上下文,您可以选择将其保留在 web.config 中,也可以在数据库中为其创建维护表。我通常会在 web.config 中保留更多特定于后端的内容,例如连接字符串、ftp 位置、用户名/密码(用于应用程序,而不是用户权限)。

    我通常会在数据库中保留更多与数据库中的信息相关的相关信息,而不是与应用程序本身相关的信息。

    这都是基于松散的,但并非总是如此。

    【讨论】:

    • 更新 web.config 会导致 IIS 回收站点。
    • 就像我说的,一切都取决于上下文。
    • 确实,当您更改配置文件时,应用程序会立即做出反应。下一个打击看到的是新的而不是旧的行为。 IIS 回收不是是真的。 ASP.NET 使用 NTFS 文件更改通知,因此在文件内容更改时会收到通知。这比回收 IIS 的重量要轻得多。
    【解决方案2】:

    如果可以并且不需要性能,我更愿意避免使用数据库。如果您需要/拥有一个数据库,那么我会说尽可能多地放在一个地方。一件事要管理。

    【讨论】:

      【解决方案3】:

      创建一个健壮的界面来编辑数据库中的值既简单又方便。

      为配置文件创建一个好的文件并不容易。

      所以我通常希望您将希望您的用户/管理员稍后能够在数据库中编辑的所有内容存储起来。仅在重新安装等重大更改期间才需要触及的所有内容最好在配置文件中进行。

      【讨论】:

      • 伊利亚,我相信没那么简单。您正在谈论额外的页面、测试、安全管理。我有提到测试吗?这需要时间、精力和金钱。我认为配置文件具有“简单”和“方便”的优点。在以下情况下您需要数据库选项: 1. 管理员无权访问配置文件 2. 存在多级安全角色 3. 设置必须由其他应用程序读取,而不仅仅是此 ASP.NET 应用程序。换句话说,在更大更复杂的情况下,配置文件是不够的。当它足够时,使用它。我错过了什么?
      【解决方案4】:

      我总是推荐数据库,因为您可以相对轻松地构建管理 UI 并轻松审核所有更改。尽管您可以通过更改文件来完成相同的操作,但具有某种管理控制区域的数据库路由总是更可取。尤其是当你想知道谁在什么时候改变了什么。

      同样在我们的环境中,如果出现错误更改配置文件,涉及到整个更改管理流程的审批/等,这非常痛苦。因此,如果您花时间将配置设置合并到数据库中,我认为从长远来看它会更好。只是我的 0.02 美元。

      【讨论】:

      • 同意,如果审计是必要的,那就是数据库的原因。如果您的变更管理流程仅仅因为与数据库相比概念信息存储在文件中而有所不同,那么该流程就有缺陷。
      【解决方案5】:

      出于以下两个原因,我更喜欢文本配置文件、.ini 样式或 XML 样式:

      1 - 您可以将 cmets 放入文本文件中。

      2 - 文本编辑器有一个“撤消”命令。

      【讨论】:

        【解决方案6】:

        我认为数据库是为分布式应用程序配置值的好地方,您希望无论他们使用哪台计算机,都可以使用用户设置。

        存储在文件中的配置值对于特定于计算机的配置非常有用(例如,如果您使用映射驱动器来识别位置,并且每个用户可能有不同的映射,例如 CD/DVD 驱动器)。

        如果您还没有用于您正在开发的应用程序的数据库,那么拥有一个专门用于应用程序配置的数据库可能有点过头了。

        【讨论】:

        • JettGeek,最初的问题是关于 ASP.NET Web 应用程序的,因此不适用于用户的计算机特定设置。
        【解决方案7】:

        我更喜欢文本.ini 文件。它们易于编辑,并且在您的应用程序移动时易于移动。这是一个示例Setting class,您可能会发现它很有用。

        【讨论】:

        • 主角,我完全不明白你为什么要这么做。原则上,ini 文件和 config 文件是相似的:可以用文本编辑器修改的简单文本文件,记事本就足够了。配置文件的不同之处在于 .NET Framework 在 System.Configuration 和 System.Web.Configuration 命名空间中的广泛支持。因此,配置文件为您提供了 ini 文件理念的优点,以及广泛的基础架构支持。我对ini文件的唯一优势是一种主观意见,即ini对人类来说更具可读性。练习阅读 XML!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        相关资源
        最近更新 更多