有Protocol buffer这种轻便的序列化反序列化工具,Json为什么还会大量使用?
原因很简单:1,json是JavaScript原生支持的,没有外部依赖;2,json具有人眼可读性;3,开发人员偷懒;关于序列化的协议和框架,估计都可以出一本百科全书了,热门一点的如:xml、json、bson、Hessian、protocol buffers...还有很多小众冷门的,排名不分先后。
虽然有各种各样的协议和框架,但序列化本质上可以分为两种:二进制协议,如 bson、Hessian、protocol buffers等,将数据转换为二进制形式。
文本协议,如 xml,json 等,这类协议将数据转换为文本(字符串)的形式。
二进制协议的优点是体积小效率高,例如protocol buffers可以用将数据压缩到位(bit),序列化和反序列化的性能也很好,非常适用于各种系统通讯和接口调用。
但问题也在这里,二进制数据几乎没有可读性,所以在开发和调试程序时,对程序员来说就比较痛苦,尤其是频繁变化的数据结构。
文本协议则刚好相反,数据体积大,性能差,却能满足可读性要求。
例如我们可以轻松看懂一段json,或者人肉构造数据。
对于快速开发和web开发来说,可以提高开发效率,开发人员不用过多关注协议或者框架,专注业务。
我的观点是:1,对于业务稳定,性能要求极高的场景,优先使用 protocol buffers 等二进制序列化协议;2,对于性能要求不高,业务变化频繁的场景,优先使用 json、xml 等文本协议;
本文经用户投稿或网站收集转载,如有侵权请联系本站。