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);
字节数组可在网络间传输,实现数据通信。
本文暂时没有评论,来添加一个吧(●'◡'●)