• protobuf 的优缺点


    什么是protobuf

    protobuf(Google Protocol Buffers)
    Google提供一个具有高效的协议数据交换格式工具库(类似Json)。
    但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。

    protobuf优点

    1、性能好/效率高

    时间开销: XML格式化(序列化)的开销还好;但是XML解析(反序列化)的开销就不敢恭维了。 但是protobuf在这个方面就进行了优化。可以使序列化和反序列化的时间开销都减短。

    空间开销:也减少了很多

    2、有代码生成机制

    比如你你写个一下类似结构体的内容

     message testA  
    {  
        required int32 m_testA = 1;  
    }  
    

    像写一个这样的结构,protobuf可以自动生成它的.h 文件和点.cpp文件。
    protobuf将对结构体testA的操作封装成一个类。

    3、支持向后兼容和向前兼容

    当客户端和服务器同事使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用

    4、支持多种编程语言

    在Google官方发布的源代码中包含了c++、java、Python三种语言

    protobuf缺点

    1、二进制格式导致可读性差

    为了提高性能,protobuf采用了二进制格式进行编码。这直接导致了可读性差。这个直接影响开发测试时候的效率。当然,一般情况下,protobuf非常可靠,并不会出现太大的问题。

    2、缺乏自描述

    一般来说,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的结构体是看不出来什么作用的。

    3、通用性差

    protobuf虽然支持了大量语言的序列化和反序列化,但仍然并不是一个跨平台和语言的传输标准。在多平台消息传递中,对其他项目的兼容性并不是很好,需要做相应的适配改造工作。相比json 和 XML,通用性还是没那么好。

  • 相关阅读:
    Java SE 疑难点记录
    重写(OverRide)与重载(OverlLoad),以及相对应的多态性
    Static 作用探讨
    Java SE作业:判断一个字符串是否是视频文件
    轨迹压缩之Douglas-Peucker算法之Java实现
    论主动思考与专注力——我的读研感悟
    西安电子科技大学2011级计算机科学与技术专业知识体系结构图
    Hadoop分布式平台概述
    Jest测试框架(未完)
    项目经验总结
  • 原文地址:https://www.cnblogs.com/niuben/p/14212711.html
Copyright © 2020-2023  润新知