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 代码来使用的。有了这种代码生成机制,开发人员再也不用吭哧吭哧地编写那些协议解析的代码了(干这种活是典型的吃力不讨好)。

          目录
          相关文章
          |
          3月前
          |
          Java 编译器 API
          protobuf万字语法详解
          当用protocol buffer编译器来运行.proto文件时,编译器将生成所选择语言的代码,这些代码可以操作在.proto文件中定义的消息类型,包括获取、设置字段值,将消息序列化到一个输出流中,以及从一个输入流中解析消息。
          44 0
          protobuf万字语法详解
          |
          3月前
          |
          XML 存储 JSON
          从零开始学习 RPC 与 Protobuf
          在数据密集型应用领域,Google 开发的 Protobuf 作为一种高效数据编码方式而广受欢迎。它胜任于 JSON 及 XML 对比,不仅在体积和速度上表现出色,而且其结构化方式优化了网络传输中的性能。简而言之,Protobuf 是将复杂数据结构编码成二进制流的手段,并能够轻松将这些流再还原回原始数据格式。
          |
          3月前
          |
          编译器 Go 开发工具
          第二章 Golang的概述
          第二章 Golang的概述
          63 2
          |
          3月前
          |
          XML JSON Java
          java项目中使用protobuf扫盲笔记
          最近公司 Java 项目中有用到 protobuf,查了些资料还是一脸迷茫。
          120 1
          |
          3月前
          |
          Java 编译器 Go
          Protobuf3语法笔记
          Protobuf3语法笔记
          73 0
          |
          存储 XML JSON
          Go语言使用protobuf快速入门
          protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。 protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。 protobuf 是以二进制方式存储的,占用空间小,但也带来了可读性差的缺点。protobuf 在通信协议和数据存储等领域应用广泛。
          176 0
          |
          XML 存储 JSON
          gRPC(二)入门:Protobuf入门
          Any以字节的形式包含任意序列化的消息,以及作为该消息类型的全局唯一标识符并解析为该消息类型的URL。要使用Any类型,您需要 import google/protobuf/any.proto
          411 0
          gRPC(二)入门:Protobuf入门
          |
          安全 编译器 Go
          Go语言,Protobuf 入门详解!
          Protobuf 是 Protocol Buffers 的简称,是一种与语言、平台无关,可扩展的序列化结构化数据的数据描述语言,Protobuf作为接口规范的描述语言,可以作为设计安全的跨语言PRC接口的基础工具。
          318 0
          Go语言,Protobuf 入门详解!
          |
          XML 存储 JSON
          【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )
          【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )
          257 0
          【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )