异步网络编程框架-Netty概念介绍
?
A helper classwhich initialize a Channel. This class provides the common data structure forits subclasses which actually initialize?Channel’s and their child?Channel’susing the common data structure. Please refer to?ClientBootstrap,?ServerBootstrap,and?ConnectionlessBootstrap for client side, server-side, andconnectionless (e.g. UDP) channel initialization respectively.
Bootstrap:初始化Channel的帮助类,包括初始化连接的基本数据结构,包括ChannelFactory、ChannelPipeline,ChannelPipelineFactory,以及保存Server或者Client端配置的options。其中ServerBootstrap、ConnectionlessBootstrap为Server端创建,ClientBootstrap为Client端创建,顾名思义,ConnectionlessBootstrap为Server端创建的UDP/IP应用。TCP和UDP的区别就不说了,根据自己应用的类别,选择合适的Bootstrap。
这个bootstrap就是个工具类,对于client和server端来说,连接完成后就Ok,至于具体的连接处理,连接关闭等都要靠具体的Channel来处理。Bootstrap的使用就和上节中的例程一样,没有更复杂的操作;准确的应该说和bootstrap这个类没有太大的关系,都是后面提及的channel、pipeline的操作。
ChannelBuffer-类图及官方定义:

Arandom and sequential accessible sequence of zero or more bytes (octets). Thisinterface provides an abstract view for one or more primitive byte arrays(byte[]) and NIO Buffers.
ChanelBuffer是Netty中的核心类,但是按照文档说明,ChannelBuffer就是把byteArrays和NIO byteBuffer包装一下,更方便的操作byte,毕竟在Channel中传输的是byte。
ChannelBuffer操作和NIO里面的ByteBuffer操作有些不一致的地方,更准确的说,ChannelBuffer定义了一套Buffer的操作,并且在应用中严格遵守规则来操作Buffer。下面我们看下Buffer的操作:
?
?
channelBuffer的具体实现类图
?

ChannelBuffer有这么多种实现,他们之间有什么区别呢?其实在上面已经有提及,如果想具体了解下,可以看下这些Buffer的duplicate、slice、copy操作。这个上面有个ByteBufferBackedChannelBuffer,这个Buffer和NIO的Buffer最为相似,不过也遵循readerIndex和writerIndex的限制。
?