经常会遇到实现一个东西, 需要使用配置文件的情况, 那么选择一个合适的配置文件格式的问题就摆在面前了, JSON? YAML? XML? HOCON?
选哪个? 举几个例子:
- AWS IAM 使用 JSON 格式
- Dropwizard 使用 YAML
- Hadoop 全家桶都是用 XML
- HOCON 是Lightbend 公司(原名 typessafe, scala 语言背后的公司)开发了一种新语法
什么? 你说 Java 中的 properties 格式? 那简直土得掉渣.....
总结几个配置文件格式选择的原则:
- 支持注释. 不支持注释的 JSON 是给机器读的, 不是给人读的
- Library 精简. 看到一堆读取 XML 的 jar 包就恶心
- 支持嵌套结构. 仅仅支持 KV 结构的 properties 文件表达能力简直弱到爆
- 最好支持定义 constants, 这样可以避免重复.
- 最好支持
include
其他配置文件, 方便配置模块化. 复杂的配置也是无奈之举, 但如果支持include
语法, 可以方便的把配置文件模块化.
捋一遍几个格式, 发现 JSON 一定是最先淘汰的; XML 也不招人待见. 重点推荐一下 HOCON, 优点全占了, 很多语言都有 library 实现, 跨语言不成问题.
-- EOF --
网友评论