计算机系统应用教程网站

网站首页 > 技术文章 正文

Google Protobuf 入门·

btikc 2024-09-04 03:24:21 技术文章 10 ℃ 0 评论

1.用途:

用于序列化于反序列化(编码于节码)的库

序列化: 对象转成字节。

反序列化:字节转成对象。

用于网络通信的数据流:

2.RMI与RPC

2.1.rmi (远程方法调用)

client:stub (桩)

server:skeleton(框架)

缺点:只针对于java。

2.2.RPC

Remote Procedure Call

优点:很多RPC框架夸语言的。

RPC处理原理:

1.定义一个接口说明文件:说明对象、对象成员,接口方法等一些列信息。

2.通过RCP框架所提供的编译器,将接口说明文件编译成具体语言文件。

3.在客户端与服务器端分别引入RPC编译器生成的文件,即可像调用本地方法一样调用远程方法。

3.protocol buff 开发

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler.

定义数据结构:

message Person {
 required string name = 1;
 required int32 id = 2;
 optional string email = 3;
}

1、2、3 表示字段顺序。

安装protocol buff 编译器:

下载protoc-3.3.0-win32.zip 绿色安装。

在gradle中引入jar:

"com.google.protobuf:protobuf-java:3.3.1",
"com.google.protobuf:protobuf-java-util:3.3.1"

3.1.ProtoBuf开发流程

  • Define message formats in a .proto file.(定义传输消息格式)
  • Use the protocol buffer compiler.

protoc -I="G:\GitHub\easeNetty\src\main\java\com\kyrie\protoBuf" --java_out="G:\GitHub\easeNetty\src\main\java" G:\GitHub\easeNetty\src\main\java\com\kyrie\protoBuf\mybook.proto

  • Use the Java protocol buffer API to write and read messages.

实例代码:

Person person = Person.newBuilder()
 .setEmail("")
 .setId(122)
 .setName("xxx").build();
 
 System.out.println(person.toString());
 
 //对象转成字节数组
 byte[] bytes = person.toByteArray();
 //从字节数组解析对象
 Person person2 = Person.parseFrom(bytes);
 
 System.out.println(person2);

字节数组可在网络间传输,实现数据通信。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表