一种二进制数据交换协议的设想

JSON 是一种相当舒服的数据表示方法,因此常常作为松散集成的各服务之间的消息承载协议。其优点在我看来有:
1. 语法简单,容易解析和流化
2. 表达能力虽然不十分强悍,但足以应付大多数场景
3. 有自描述能力,无需额外的接口定义语言
4. 数据中包含了基本的类型信息,便于程序自动化处理
5. 和程序中的常用数据结构有较好的对应
6. 文本协议带来的透明性和易于调试

但仍有不足,主要在于:
1. OBJECT 表示法,对于大量同类型数据,将产生大量的属性名冗余
2. 承载二进制内容会导致大量的转义开销
3. 类型应该更丰富一点

最近刚好工作中略有涉及,我就想能否设计一个二进制表示法能够继承 JSON 的大多数有点,并弥补其缺点,具体说来包含如下特点:
1. 协议简单,一页纸可以描述
2. 编码效率高
越常用的数据应该尺寸越少,包括:null/true/false 以及一些小整数,最好能一个字节搞定
字符串可以在同一份文档中被反复引用
被引用的数据即可以预先定义,也可以在第一次出现时隐式定义
3. 和程序中的数据结构容易对应
区分不可更改的 STRING 和可更改的 BLOB
区分不可更改的 TUPLE 和可更改的 ARRAY
取消 OBJECT 类型,而支持更加面向数据的概念 DICTIONARY
增加自定义类型的支持

猜你喜欢

转载自hh9527.iteye.com/blog/1159606