經(jīng)常會遇到實現(xiàn)一個東西, 需要使用配置文件的情況, 那么選擇一個合適的配置文件格式的問題就擺在面前了, JSON? YAML? XML? HOCON?
選哪個? 舉幾個例子:
- AWS IAM 使用 JSON 格式
- Dropwizard 使用 YAML
- Hadoop 全家桶都是用 XML
- HOCON 是Lightbend 公司(原名 typessafe, scala 語言背后的公司)開發(fā)了一種新語法
什么? 你說 Java 中的 properties 格式? 那簡直土得掉渣.....
總結(jié)幾個配置文件格式選擇的原則:
- 支持注釋. 不支持注釋的 JSON 是給機器讀的, 不是給人讀的
- Library 精簡. 看到一堆讀取 XML 的 jar 包就惡心
- 支持嵌套結(jié)構(gòu). 僅僅支持 KV 結(jié)構(gòu)的 properties 文件表達(dá)能力簡直弱到爆
- 最好支持定義 constants, 這樣可以避免重復(fù).
- 最好支持
include
其他配置文件, 方便配置模塊化. 復(fù)雜的配置也是無奈之舉, 但如果支持include
語法, 可以方便的把配置文件模塊化.
捋一遍幾個格式, 發(fā)現(xiàn) JSON 一定是最先淘汰的; XML 也不招人待見. 重點推薦一下 HOCON, 優(yōu)點全占了, 很多語言都有 library 實現(xiàn), 跨語言不成問題.
-- EOF --