文本类型
最常见的文本类型数据序列化格式要数 JSON 和 XML 了。
早年间,知名的 RPC 规范 SOAP,XML-RPC 就是定义在 XML 的基础之上。
后来,随着 Web 的流行,JSON 使用得越来越多,基于 JSON 的 RPC 也开始出现。
但是最后 RPC 整体衰弱下来,终究没有抵过 HTTP API 的趋势。大部分 HTTP API 都是基于 JSON,少部分基于 XML。
苹果公司的 plist (Property list) 格式也是基于 XML。
除了 JSON 和 XML 之外,其他常见的文本类型数据序列化格式还有:CSV,YAML。
二进制类型
-
ASN.1 参考 2020/01/31, ASN.1。
-
D-BUS
-
三种语言相关的序列化格式:
-
Java Object Serialization
- Python Pickle
-
PHP serialization format
-
Mongo 引入的 BSON,二进制 JSON。类似的格式(JSON 二进制化)还有:
-
Binn
- CBOR (rfc8949)
- Amazon Ion
- msgpack
- Smile
-
ubjson。
-
也有一些 XML 二进制化的格式(Binary XML),比如:
-
W3C 推荐的 Efficient XML Interchange (EXI)
-
ISO 标准 Fast Infoset。
-
Apache 基金会的 Avro 和 Parquet。
-
近些年,随着微服务的流行,RPC 重新席卷而来。一般都是采用二进制的数据格式。
二进制的编码效率更高,可视化(转换成文本)的问题可以通过网关来提供。
Google 公司的 Protocol Buffers (protobuf) 和 FlatBuffers
Apache Thrift 也有自己独创的序列化格式(同名)。