zoukankan      html  css  js  c++  java
  • 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基础知识强化之集合框架笔记20:数据结构之 栈 和 队列
    Java基础知识强化之集合框架笔记19:List集合迭代器使用之 并发修改异常的产生原因 以及 解决方案
    模块已加载,但对dllregisterServer的调用失败
    sql回滚
    BAT 批处理脚本 教程
    shell脚本小技巧
    shell if
    REDHAT4.8安装yum
    Linux中文显示乱码解决
    Nginx配置文件详细说明
  • 原文地址:https://www.cnblogs.com/niuben/p/14212711.html
Copyright © 2011-2022 走看看