一. Channel接口

1. 基本的IO操作:bind(),connect(),read(),write();

2. Channel接口提供的API降低了直接使用Socket类的复杂性;

3. 拥有许多预定义的,专门化实现的类:EmbeddedChannel,LocalServiceChannel,NioDatagramChannel,NioSctpChannel,NioSocketChannel等;

二. EventLoop接口

1. 定义了Netty的核心抽象,用于处理连接的生命周期中所发生的事件;

2. 一个EventLoopGroup包含一个或多个EventLoop;

3. 一个EventLoop在它的声明周期只和一个Thread绑定;

4. 所有由EventLoop处理的IO事件都将在它专有的Thread上被处理;

5. 一个Channel在它的声明周期内只注册一个EventLoop;

6. 一个EventLoop可能会被分配给一个或多个Channel;

7. 一个给定Channel的IO操作都是由相同的Thread执行的,消除了对同步的需要;

三. ChannelFuture接口

1. Netty中所有的IO操作都是异步的;

2. ChannelFuture接口的addListener()方法注册一个ChannelFutureListener,以便在操作完成时得到通知;

3. 所有属于同一个Channel的操作都被保证以被调用的顺序执行;

四. ChannelHandler接口

1. 充当了所有处理入站和出站数据的应用程序逻辑的容器;

2. ChannelHandler的方法是由网络事件触发的;

五. ChannelPipeline接口

1. ChannelPipeline为ChannelHandler链提供了容器,并定义了用于在该链上传播入站和出站事件流的API;

2. 如果一个事件被读取,会从ChannelPipeline的头部开始流动,传递给第一个ChannelHandler,之后按照被添加的顺序传递给下一个ChannelHandler,直到ChannelPipeline尾部;

3. 当ChannelHandler被添加到ChannelPipeline时会分配一个ChannelHandlerContext,其代表了ChannelHandler和ChannelPipeline的绑定,所以Netty能确保数据只在具有相同定向类型的两个ChannelHandler之间传递;