学习总结 2021.12.30
本周在学习上的投入时间有点少,主要是到了年底有个项目要支持,确实有些分身乏术,所以,对这一章知识的学习并不深入
在讲第六结课时,老师提到了 JSON 和 Protocol Buffer,刚好对这个概念不是很了解,先初步学习下
1. XML、JSON、Protobuf 比较
在分布式系统中,数据序列化传递的情景,主流的三种,XML、JSON、Protobuf。
序列化:将 数据结构或对象 转换成 二进制串 的过程
jsonj 反序列化:将在序列化过程中所生成的二级制串 转换成 数据结构或对象 的过程
下面的对比参考自:https://stackoverflow.com/questions/14028293/google-protocol-buffers-vs-json-vs-xml
1.1. XML
human readable/editable 可读/可编辑
can be parsed without knowing schema in advance 可以在不事先知道模式的情况下进行分析
standard for SOAP etc SOAP 的标准
good tooling support (xsd, xslt, sax, dom, etc) 良好的工具支持(xsd、xslt、sax、dom 等)
pretty verbose 非常冗长
1.2. JSON
human readable/editable 可读/可编辑
can be parsed without knowing schema in advance 可以在不事先知道模式的情况下进行分析
excellent browser support 出色的浏览器支持
less verbose than XML 比 XML 更详细
1.3. Protobuf
very dense data (small output) 非常密集的数据(小输出)
hard to robustly decode without knowing the schema (data format is internally ambiguous, and needs schema to clarify) 在不知道模式的情况下很难可靠地解码(数据格式在内部是不明确的,需要模式来澄清)
very fast processing 非常快速的处理
not intended for human eyes (dense binary) 不适用于人眼(密集二进制)
JSON 格式,每个记录都要包括 CName、Gender
与 JSON 不同,Protobuf 用二进制编码数据,数据的格式事先通过一个后缀名为.proto 的文件文件指定
评论