ProtoBuf 第一章、初识

简介: Protocol Buffers 是 Google 的一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 类比于 XML,是一种灵活,高效,自动化机制的结构数据序列化方法,但是比XML 更小、更快、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。3. 依赖生成的接口,实现对 .proto 文件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化。

一、初识 ProtoBuf

image.gif编辑

image.gif编辑

image.gif编辑

1.1序列化的概念

序列化和反序列化

    • 序列化:把对象转换为字节序列的过程 称为对象的序列化。
    • 反序列化:把字节序列恢复为对象的过程 称为对象的反序列化。

    什么情况下需要序列化

      • 存储数据:当你想把的内存中的对象状态保存到一个文件中或者存到数据库中时。
      • 网络传输:网络直接传输数据,但是无法直接传输对象,所以要在传输前序列化,传输完成后反序列化成对象。例如我们之前学习过 socket 编程中发送与接收数据。

      如何实现序列化

        • xml、json、 protobuf

        1.2ProtoBuf 是什么

        官方答案:

        Protocol Buffers 是 Google 的一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 类比于 XML,是一种灵活,高效,自动化机制的结构数据序列化方法,但是比XML 更小、更快、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。

        简单来讲, ProtoBuf(全称为 Protocol Buffer)是让结构数据序列化的方法,其具有以下特点:

          • 语言无关、平台无关:即 ProtoBuf 支持 Java、C++、Python 等多种语言,支持多个平台。
          • 高效:即比 XML 更小、更快、更为简单。
          • 扩展性、兼容性好:你可以更新数据结构,而不影响和破坏原有的旧程序。
          • ProtoBuf 是需要依赖通过编译生成的 JAVA 代码来使用的。

          1.3ProtoBuf 的使用特点

          image.gif编辑

          1. 编写 .proto 文件,目的是为了定义结构对象(message)及属性内容。

          2. 使用 protoc 编译器编译 .proto 文件,生成一系列接口代码。

          3. 依赖生成的接口,实现对 .proto 文件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化。

          总的来说:ProtoBuf 是需要依赖通过编译生成的 JAVA 代码来使用的。有了这种代码生成机制,开发人员再也不用吭哧吭哧地编写那些协议解析的代码了(干这种活是典型的吃力不讨好)。

          目录
          打赏
          0
          0
          0
          0
          10
          分享
          相关文章
          NSIS安装包开发笔记(三):NSIS使用Qt做的安装界面制作安装包交互详解
          NSIS安装包开发笔记(三):NSIS使用Qt做的安装界面制作安装包交互详解
          NSIS安装包开发笔记(三):NSIS使用Qt做的安装界面制作安装包交互详解
          【Conan 基础 知识】Conan中的构建类型 Release和 Debug
          【Conan 基础 知识】Conan中的构建类型 Release和 Debug
          193 0
          IM开发基础知识补课(二):如何设计大量图片文件的服务端存储架构?
          友情提示:正文内容整理自架构师丁浪的技术分享,部分观点可作抛砖引玉之用,可能并非最佳实践,欢迎留言指正。 1、前言 一个完善的IM系统中通常充斥着大量的图片内容,包括:用户头像、图片消息、相册、图片表情等等,那么在做服务端架构设计时该如何存储这些图片呢? 本文分享的是典型Web应用中大量图片的服务端存储加构的演进过程,但基本的技术原理和架构思路对于IM系统而言同样适用,所以在阅读时可以根据自已IM的实际架构情况,酌情吸取适合您的内容即可。
          2698 1
          【Conan 入门教程 】Conan 2.1中的打印方式/输出管理
          【Conan 入门教程 】Conan 2.1中的打印方式/输出管理
          140 1
          C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
          C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
          C语言, C++ IO 总结. 一篇文章帮你透析缓冲区存在的意义, C, C++ IO的常见用法
          C++ ORM ODB入门
          1.ORM ORM, Object Relational Mapping, 对象关系映射,用来将基于对象的数据结构映射到SQL的数据结构中。即将基于对象的数据映射到关系表中的字段,然后我们可以通过对象提供的接口来操作数据库,而无需写sql语句来操作数据库。
          6454 0
          【Conan 入门问题】Conan 删除本地缓存后的解决方法
          【Conan 入门问题】Conan 删除本地缓存后的解决方法
          536 0
          AI助理

          你好,我是AI助理

          可以解答问题、推荐解决方案等