Netty——Channel功能之剖

       Channel是netty网络操作抽象类,它聚合网络的读、写、客户端发起连接、主动关闭连接、链路关闭,获通信双方的网络地址等,也包括获取该Chanel的EventLoop获取缓冲分配器的ByteBufAllocator和pipeline等。也是非常非常重要的。

       一,看下它的设计理念:1,Netty在Channel接口层,采用Facade模式进行统一封装,将网络I/O操作和相关的其他操作封装起来,统一对外提供;2,Channel接口的定义尽量大而全,为SocketChannel和ServerSocketChannel提供统一的视图,由不同子类进行实现不同的功能,最大程度的实现功能和接口的重用;3,具体实现采用聚合而非包含的方式,将相关功能聚合在Channel中,由Channel统一负责分配和调度,功能实现更加灵活。

       二,来看下Channel的相关功能:

    三,看看Channel的相关继承关系统:

    1,server端:

    2,client端:

       四,相关类的源码分析,这里我还是用思维导图的形式,将源码和分析部分放到了注释中,其实按照我的思维导图,用心看这些类,基本上都能读个差不多的:

      好,今天主要讲了Channel的相关功能、接口类结构、源码分析。细心的朋友一定会看到其实在Channel中有一个内部接口Unsafe,其实Channel很多操作都是通过调用Unsafe来实现的,下篇我们学习Unsafe相关知识。

      其实JDK也有Unsafe类,我们可以先学习一下这个:说一说Java的Unsafe类https://www.cnblogs.com/pkufork/p/java_unsafe.html

      PS:思维导图的下载:Channel相关总结 

猜你喜欢

转载自blog.csdn.net/liujiahan629629/article/details/84112994