一、编码和解码的基本介绍
1、编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发数据时就需要编码,接收数据时就需要解码
2、codec(编解码器)的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder负责把业务数据转换成字节码数据,decoder负责把字节码数据转换成业务数据
二、netty本身的编码解码的机制和问题分析
1、netty自身提供了一些codec(编解码器)
2、netty提供的编码器
StringEncoder:对字符串数据进行编码
ObjectEncoder:对Java对象进行编码
3、netty提供的解码器
StringDecoder:对字符串数据进行解码
ObjectDecoder:对Java对象进行解码
4、netty本身自带的ObjectDecoder和ObjectEncoder可以用来实现POJO对象或各种业务对象的编码和解码,底层使用的仍是Java序列化技术,而Java序列化技术本身效率就不高,存在如下问题
(1)无法跨语言,客户端是Java写的,要求服务器端也要用Java,用Python就不可以
(2)序列化后的体积太大,是二进制编码的5倍多
(3)序列化性能太低
5、新的解决方案Google的Protobuf