在计算机领域为了保证信息能够被处理,信息也会被做成特定的格式,而且要确保目标能够明白这种格式。常用的信息格式包括:
1、XML
可扩展标记语言,这个语言由W3C(万维网联盟)进行发布和维护。XML语言应用之广泛,扩展之丰富。适合做网络通信的信息描述格式(一般是“应用层”协议了)。例如Google 定义的XMPP通信协议就是使用XML进行描述的;不过XML的更广泛使用场景是对系统环境进行描述(因为它会造成较多的不必要的内容传输),例如服务器的配置描述、Spring的配置描述、Maven仓库描述等等。
2、JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它和XML的设计思路是一致的:和语言无关(流行的语言都支持JSON格式描述:Go、Python、C、C++、C#、JAVA、Erlang、JavaScript等等);但是和XML不同,JSON的设计目标就是为了进行通信。要描述同样的数据,JSON格式的容量会更小。
3、protocol buffer(PB):
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。
4、TLV(三元组编码):
T(标记/类型域)L(长度/大小域)V(值/内容域),通常这种信息格式用于金融、军事领域。它通过字节的位运算来进行信息的序列化/反序列化(据说微信的信息格式也采用的是TLV,但实际情况我不清楚):
这里有一篇介绍TLV的文章:《通信协议之序列化TLV》,TLV格式所携带的内容是最有效的,它就连JSON中用于分割层次的“{}”符号都没有。
5、自定义的格式
当然,如果您的两个内部系统已经约定好了一种信息格式,您当然可以使用自己定制的格式进行描述。您可以使用C++描述一个结构体,然后序列化/反序列它,或者使用一个纯文本,以“|”号分割这些字符串,然后序列化/反序列它。