Google Protocol Buffer 环境搭建与使用案例

x33g5p2x  于2022-05-30 转载在 其他  
字(1.4k)|赞(0)|评价(0)|浏览(151)

一 下载 protoc 工具

protoc 的下载地址:https://dbojg6dv.fast-github.tk/-----https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.0

下载文件:protoc-3.6.0-win32.zip

下载完后,将 protoc.exe 加入到环境变量中。

二 相关依赖

<dependency>

<groupId>com.google.protobuf</groupId>

<artifactId>protobuf-java</artifactId>

<version>3.5.1</version>

</dependency>

<dependency>

<groupId>com.google.protobuf</groupId>

<artifactId>protobuf-java-util</artifactId>

<version>3.5.1</version>

</dependency>

三 点睛

Google Protocol Buffer 简称 Protobuf,主要用于消息(message)的编码和解码,从而协助用户实现 RPC。其核心思想是编写一个通用的、用于存储数据的 message 文件,用于消除程序语言对特定数据的依赖。例如,Java 是用“类”传递数据,而 Java 类的编写就密切依赖 Java 语言,即 Python 等其他语言不能直接使用 Java 类。而 Protobuf 就可以将数据存储在通用的 message 文件中,任何语言在使用时,只需要将 message 再转换成符合自己语言的数据结构(如 Java 中的类)即可。

使用 Protobuf 实现跨语言数据传递的基本步骤如下:

1 将 message 以规定的数据结构编写到 .proto 文件中。

2 根据 .proto 文件,转换成特定语言存储数据的数据结构,如 Java 中的类。

3 根据特定语言,将生成的数据结构编译为各个语言通用的中间件形式(byte 数组),如 Java 编译后的 .class 文件。

4 通过网络编程(如 Socket、Netty),将中间件发送给远端。

5 远端接收后,再将中间件翻译成自己需要的文件格式(如 .cpp、.py 等)。

四 Protobuf 数据传递流程

五 编写 .proto 文件

syntax = "proto2" ;

package com.cakin.protobuf ;

option optimize_for = SPEED ;

option java_package = "com.cakin.protobuf.diff" ;

option java_outer_classname = "StudentMessage" ;

message Student

{

required string name = 1 ;

optional int32 age = 2 ;

}

六 将 .proto 翻译成特定语言存储数据的数据结构

如果要将 message.proto 翻译成 .java 文件,并且将 .java 文件保存在 javapath 目录中,可以通过以下命令实现
protoc --java_out=javapath message.proto

相关文章