19-高并发- 编码和解码-解码器和编码器的结合

一、Codec类型

  • 解码器和编码器是分开实现的,但往往要搭配使用,且具有相反逻辑。再加入流水线时往往需要两次添加。
  • 相互配套的解码器和编码器可以放在同一个类中,netty的新类型-Codec类型。
  • 完成POJO到ByteBuf数据包的配套的编码器和解码器的基类,叫作ByteToMessageCodec<I>,它是一个抽象类。从功能上说,继承它,就等同于继承了ByteToMessageDecoder解码器和MessageToByteEncoder编码器这两个基类。
  • 对于POJO之间进行转换的编码和解码,Netty将MessageToMessageEncoder编码器和MessageToMessageDecoder解码器进行了简单的整合,整合出一个新的基类——MessageToMessageCodec(编解码器)。这个基类同时包含了编码encode和解码decode两个抽象方法,用于完成pojo-to-pojo的双向转换。

二、组合器

  • 前面的编码器和解码器相结合是通过继承完成的。继承的方式有其不足,在于:将编码器和解码器的逻辑强制性地放在同一个类中,在只需要编码或者解码单边操作的流水线上,逻辑上不大合适。
  • 编码器和解码器如果要结合起来,除了继承的方法之外,还可以通过组合的方式实现。与继承相比,组合会带来更大的灵活性:编码器和解码器可以捆绑使用,也可以单独使用。
  • Netty提供了一个新的组合器——CombinedChannelDuplexHandler基类。
    //...
            public class IntegerDuplexHandler extends CombinedChannelDuplexHandler<
                  Byte2IntegerDecoder, Integer2ByteEncoder>
            {
                public IntegerDuplexHandler() {
                  super(new Byte2IntegerDecoder(), new Integer2ByteEncoder());
                }
            }

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值