不同配置格式的优缺点?

新手上路,请多包涵

我见过人们使用 *.cfg(Python Buildout)、*.xml(Gnome)、*.json(Chrome 扩展)、*.yaml(Google App Engine)、*.ini 甚至 *.py 作为应用程序配置文件(比如 Django)。

我的问题是:为什么有这么多不同的配置文件格式?我可以看到 xml vs json 方法(更不冗长)或 Python 方法(有时你有一个 Python 应用程序并且不想使用特定模块来解析配置文件)的优势,但是另一个呢方法?

我知道还有比我举例说明的那些配置文件更多的格式。与彼此相比,它们的真正优势是什么?历史原因?与不同系统的兼容性?

如果您要启动一个应用程序来读取某种配置文件(带有插件生态系统),您会使用哪一个?

我举例的哪些是最古老的?你知道它的历史吗?

原文由 Somebody still uses you MS-DOS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 580
2 个回答

这主要是个人喜好、目的和可用的库。我个人认为 xml 对于配置文件来说过于冗长,但它很流行并且有很棒的库。

.cfg、.ini 是运行良好的传统格式,许多语言都有一个包含的库来读取它们。我已经在 Java、Python、C++ 中毫无问题地使用过它。它并不真正用作数据交换格式,如果我要传递数据,我可能会使用相同的格式进行配置和数据交换。

yaml 和 json 介于 xml 和 cfg/ini 之间。您可以在两者中定义许多数据结构,也可以是像 cfg 一样的简单键值。这两种格式在 python 中都有很好的库,我假设许多其他语言也有库。我相信 json 是 yaml 的子集。

我从来没有使用过 python 文件作为配置,但它似乎确实适用于 django。它确实允许您在配置中包含一些可能有用的代码。

上次我在选择格式时选择了 yaml。它很简单,但有一些不错的特性,而且 python 库很容易安装而且非常好。 Json 紧随其后,因为 yaml 库解析了 json,所以我选择了 yaml 而不是它。

原文由 mfperzel 发布,翻译遵循 CC BY-SA 2.5 许可协议

请注意,这纯粹是我的意见和猜测,但我怀疑格式过多的最大原因可能是缺乏现成的、无所不在的配置文件解析库。缺少它,大多数程序必须编写自己的解析器,因此通常会在配置结构需要多复杂(分层与平面,纯数据与嵌入式逻辑,如 if 语句等)、开发人员需要付出多少努力之间取得平衡愿意花钱编写配置文件解析器,以及最终用户应该承受多少痛苦。但是,您列出并可能想到的每一个原因都可能是一两个项目选择其格式的动机。

对于我自己的项目,我倾向于使用 .ini,因为 Python 中已经内置了一个优秀的解析器,而且它对于我的大多数用例来说已经“足够好”了。在某些情况下,它是不够的,我使用了基于 XML 的配置文件,这也是由于实现相对简单。

原文由 Rakis 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题