【问题标题】:Sane Configuration Method for very Complex Piece of Software?非常复杂的软件的合理配置方法?
【发布时间】:2011-07-01 13:29:47
【问题描述】:

我们正在编写一个 C++ 程序,该程序需要高度可配置(在启动时)。 现在我们有一个基本的 XML 文件,其中包含几个配置变量,以及具有更多配置变量的其他 XML 文件的文件名。总而言之,我们有一个包含大约 10 个 XML 文件的树,以及一些包含其他内容的二进制文件格式。

我们现在正处于一个非常混乱的地步:由于文件是相互关联的,因此很难找到实际解析了哪些文件以及需要编辑哪些配置或要设置哪些路径。

除了相互关联的 XML 文件之外,还有其他更好的方法来实现复杂软件的配置吗?

我不想放弃这种方法的一个优点,那就是从配置的一部分切换到另一部分相对容易。例如,我们有两个不同机器人的两个配置文件,要在我们使用的机器人之间切换,我们只需从基本 XML 文件链接正确的文件。

编辑 一些可能的想法可能是:

  • 切换到使用数据库?这将是高度可配置的,但不是人类可读的。
  • 某些结构,例如 firefox 的 about:config?
  • 一个巨大的平面 .ini 文件,只处理复制内容?不是一个选项,这会更麻烦
  • ...

【问题讨论】:

    标签: c++ xml configuration-files configuration-management


    【解决方案1】:

    Lua 专为配置而设计。

    【讨论】:

      【解决方案2】:

      如果你使用的是 C++,你可以使用

      http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html 提升计划选项。

      它允许您将配置存储在文件中并交替使用命令行参数。

      【讨论】:

      • 现在有很多结构并使用 boost XML 序列化
      • 太棒了,那么你就成功了。我建议不要使用简单的序列化并实现选项策略,然后您可以使用 PO lib 在需要时使用命令行参数覆盖选项,而不是对 xml 文件进行符号链接。
      【解决方案3】:

      我主要来自 Java 和 .NET 世界,但完全理解拥有如此多的配置文件、不同的环境和共享的配置参数所带来的痛苦。作为前一家公司的一个解决方案,我们开始构建一些对我们有很大帮助的东西,它允许配置继承、模板化和强类型配置值以及配置的审计和访问控制。

      我们即将发布我们的解决方案作为托管配置管理服务。如果您有兴趣,请在http://woot.configchief.com注册测试版

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2014-03-08
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多