Netty12——编解码和数据传输

一、编码和解码

 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码。
 编解码器(codec)的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据。
在这里插入图片描述

二、Netty 的编解码器

 Netty 自身提供了一些 codec(编解码器),Netty 提供的编码器有:
  StringEncoder:对字符串数据进行编码
  ObjectEncoder:对 Java 对象进行编码
  …
 Netty 提供的解码器:
  StringDecoder:对字符串数据进行解码
  ObjectDecoder:对 Java 对象进行解码
  …
 Netty 本身自带的 ObjectDecoder 和 ObjectEncoder 可以用来实现 POJO 对象或各种业务对象的编码和解码,底层使用的仍是 Java 序列化技术 , 而Java 序列化技术本身效率就不高,存在如下问题:
  ①无法跨语言
  ②序列化后的体积太大(是二进制编码的 5 倍多)
  ③序列化性能太低

三、Protobuf

 Protobuf 是 Google 发布的开源项目,全称 Google Protocol Buffers,是一种轻便高效的结构化数据存储格式,可以用于结构化数据的串行化,或者说序列化。它很适合做数据存储或 RPC(远程过程调用)的数据交换格式 。参考指南
 Protobuf 是以 message 的方式来管理数据的;支持跨平台、跨语言(即客户端和服务器端可以是不同的语言编写的),支持目前绝大多数语言,例如 C++、C#、Java、python 等;而且具有高性能和高可靠的特性。
 使用 protobuf 编译器能自动生成代码,Protobuf 是将类的定义使用.proto 文件进行描述(在idea 中编写 .proto 文件时,会自动提示是否下载 .ptotot 编写插件. 可以让语法高亮),然后通过 protoc.exe 编译器根据.proto 自动生成 .java 文件。
在这里插入图片描述
 使用时需引入依赖:

compile 'com.google.protobuf:protobuf-java:3.6.1'

 Protobuf 是跨平台数据传输的一种方式,但使用起来略微复杂,大部分情况下使用 JSON 进行数据交互。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值