第 7 章 Google Protobuf

7.1 编码和解码的基本介绍

  1. 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码

  2. codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据
    在这里插入图片描述

7.2 Netty 本身的编码解码的机制和问题分析

  1. Netty 自身提供了一些 codec(编解码器)

  2. Netty 提供的编码器
    -StringEncoder,对字符串数据进行编码
    ObjectEncoder,对 Java 对象进行编码

  3. Netty 提供的解码器
    StringDecoder, 对字符串数据进行解码
    ObjectDecoder,对 Java 对象进行解码

  4. Netty 本身自带的 ObjectDecoder 和 ObjectEncoder 可以用来实现 POJO 对象或各种业务对象的编码和解码,底层使用的仍是 Java 序列化技术 , 而Java 序列化技术本身效率就不高,存在如下问题:
    1.无法跨语言
    2.序列化后的体积太大,是二进制编码的 5 倍多。
    3.序列化性能太低
    ===> 引出 新的解决方案 [Google 的 Protobuf]

7.3 Protobuf

在这里插入图片描述
在这里插入图片描述

7.4 Protobuf 快速入门实例

编写程序,使用 Protobuf 完成如下功能

  1. 客户端可以发送一个 Student PoJo 对象到服务器 (通过 Protobuf 编码)
  2. 服务端能接收 Student PoJo 对象,并显示信息(通过 Protobuf 解码)
    在这里插入图片描述

7.5 Protobuf 快速入门实例 2

  1. 编写程序,使用 Protobuf 完成如下功能
  2. 客户端可以随机发送 Student PoJo/ Worker PoJo 对象到服务器 (通过Protobuf 编码)
  3. 服务端能接收 Student PoJo/ Worker PoJo 对象(需要判断是哪种类型),并显示信息(通过 Protobuf 解码)
    在这里插入图片描述
发布了138 篇原创文章 · 获赞 3 · 访问量 7227

猜你喜欢

转载自blog.csdn.net/weixin_43719015/article/details/105300193