WEB开发网
开发学院软件开发Java 深入理解Apache Mina (4)---- IoFilter和Io... 阅读

深入理解Apache Mina (4)---- IoFilter和IoHandler的区别和联系

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示:在《与IoFilter相关的几个类》和《与IoHandler相关的几个类》两篇文档中我们了解了IoFilter和IoHandler的基本用法,以及其相关类的作用和用途,深入理解Apache Mina (4)---- IoFilter和IoHandler的区别和联系,在本文中主要探讨IoFilter和IoHandler的

在《与IoFilter相关的几个类》和《与IoHandler相关的几个类》两篇文档中我们了解了IoFilter和IoHandler的基本用法,以及其相关类的作用和用途。在本文中主要探讨IoFilter和IoHandler的主要区别和联系。

在上面的两篇文档中都提到了IoFilter和IoHandler都是对服务器或客户端(IoAcceptor/IoConnector)接收到的数据进行处理。在Mina的官方文档《The high-performance protocol construction toolkit》给出了IoFilter和IoHandler在Mina数据传输中的执行顺序,如下图:

深入理解Apache Mina (4)---- IoFilter和IoHandler的区别和联系

上图显示了IoService进行数据读写时,各主要组件的执行顺序:

(1)IoService读取数据时个组件的执行顺序是:IoProcessor-->IoFilter-->IoHandler。

(2)IoService发送数据时的执行数顺序:IoHandler-->IoFilter-->IoProcessor。

IoProcessor是一个处理线程,它的主要作用是根据当前连接的状态的变化(创建会话、开启会话、接收数据、发送数据、发生异常等等),来将数据或事件通知到IoFilter,当IoFilter的相应的方法接收到该状态的变化信息是会对接收到的数据进行处理,处理完毕后会将该事件转发到IoHandler中,有IoHandler完成最终的处理。在这里 IoProcessor的主要功能是创建资源(创建/分配线程给IoFilter)和数据转发(转发到IoFilter),IoFilter对数据进行基本的分类(如编解码),IoHandler则负责具体的逻辑实现。也就是说IoFilter对接收到的数据包的具体内容不做处理,而是有 IoHandler来对所接收到的数据包进行处理,根据数据包的内容向客户端返回响应的信息。

1 2 3  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接