• Netty编解码技术


    编解码技术,说白了就是java序列化技术,序列化目的就两个,第一进行网络传输,第二对象持久化。

    虽然我们可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤比较多,比如java序列化没办法跨语言,序列化后码流太大,序列化性能太低等等。。

    主流的编解码框架:

      JBoss的Marshalling包

      google的Protobuf

      基于Protobuf的Kyro

      MessagePack框架

    现在我们使用JBoss的Marshalling进行编解码

    JBoss Marshalling是一个java对象序列化包,对JDK默认的序列化框架进行了优化,但有保持跟java.io.Serializable接口兼容,同时增加了一些可调的参数和附加特性,

    类库:jboss-marshalling-1.3.0 、jboss-marshalling-serial-1.3.0

    下载地址:https://www.jboss.org/jbossmarshalling/downloads

    Jboss Marshalling与Netty结合后进行序列化对象的代码编写非常简单,下面看一个demo:

     首先,新建一个编解码的工厂类:

    在这一次通信的时候,不再传输字符串,该成传输对象,这两个对象分别是Request和Response,看一下这两个类:

    下面看一下Server端的实现:

    Server端就是加了Marshalling的编解码,没有加其他的东西,

    下面看一下ServerHandler:

    这边把对象转换成Request对象,然后把对象的内容打印出来,同时返回给客户端Response对象,

     下面看一下Client端代码:

    这部分的代码同Server端的代码类似,看一下启动时,Client端往Server端发送的数据

    这边将发送req对象,进行两端的通信,需要注意的是,在Server端和Client端的对象的位置要完全一样,内容也要完全一样,包名也是一样的,不然将会解析失败;

    下面看一下运行的结果:

    看一下Server端打印结果:

    看一下Client端打印的结果

     

    这只是其中一种编解码技术,其他几种也都很简单。

  • 相关阅读:
    go-micro registry 服务的注册和发现
    Element UI
    VUE常用插件和依赖的安装!
    Element dialog实现拖拽功能
    JAVA
    修改windows的host文件
    Vue
    Vue
    Vue
    Vue
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/7111392.html
Copyright © 2020-2023  润新知