配置文件格式的选择

96
haitaoyao
2017.09.17 23:14* 字数 319

经常会遇到实现一个东西, 需要使用配置文件的情况, 那么选择一个合适的配置文件格式的问题就摆在面前了, JSON? YAML? XML? HOCON?

选哪个? 举几个例子:

  • AWS IAM 使用 JSON 格式
  • Dropwizard 使用 YAML
  • Hadoop 全家桶都是用 XML
  • HOCON 是Lightbend 公司(原名 typessafe, scala 语言背后的公司)开发了一种新语法

什么? 你说 Java 中的 properties 格式? 那简直土得掉渣.....

总结几个配置文件格式选择的原则:

  1. 支持注释. 不支持注释的 JSON 是给机器读的, 不是给人读的
  2. Library 精简. 看到一堆读取 XML 的 jar 包就恶心
  3. 支持嵌套结构. 仅仅支持 KV 结构的 properties 文件表达能力简直弱到爆
  4. 最好支持定义 constants, 这样可以避免重复.
  5. 最好支持 include 其他配置文件, 方便配置模块化. 复杂的配置也是无奈之举, 但如果支持 include 语法, 可以方便的把配置文件模块化.

捋一遍几个格式, 发现 JSON 一定是最先淘汰的; XML 也不招人待见. 重点推荐一下 HOCON, 优点全占了, 很多语言都有 library 实现, 跨语言不成问题.

-- EOF --

随笔