7.Netty初认识--编解码

  |   0 评论   |   0 浏览

Java对象要在网络上传输或者存储就需要进行序列化,而Java的序列化从以下两个方面表现都比较差:

  1. 对象序列化后的码流大小,很大。
  2. 对象序列化的性能(比如序列化耗费时间很长[相比二进制]) 很差。

有没有可以替代的编解码框架,当然有:

1.Google的Protobuf
将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方法和属性,特点如下:

a. 结构化数据存储格式(XML, JSON等)
b. 高效的编解码性能
c. 语言无关、平台无关、扩展性好;
d. 官方支持java\c++和python三种语言。

protobuf使用二进制编码,在空间和性能上具有更大的优势。

  1. Facebook的Thrift
    支持C++\C#\Cocoa, erlang, haskell , java, ocami, perl, php, python, ruby 和 smalltalk.
    thrift 适用于静态的数据交换,需要先确定好它的数据结构,当数据结构发生变化时,必须重新编辑IDL文件,生产代码和编译,这一点跟其他IDL工具相比可以视为Thrift的弱项。

Thrift通过IDL描述接口和数据结构定义,它支持8中Java基本类型、Map、Set、和List,支持可选和必选定义,功能非常强大,以为可以定义数据结构中字段的顺序,所以它也支持协议的前向兼容。

3.JBoss Marshalling

修正了jdk自带的序列化包的很多问题,是可插拔的类解析器,通过一个接口即可实现定制。
可插拔的对象替换技术,不需要通过集成的方式.
无需实现java.io.Serializable接口,即可实现java序列化.
通过缓存技术提升对象的序列化性能。

相比于签名两种编解码框架,JBoss Marshalling更多是在JBoss内部应用,应用范围有限。


标题:7.Netty初认识--编解码
作者:码农路上
地址:http://wujingjian.club/articles/2020/03/02/1583135677883.html