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

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

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示: 我们以《与IoHandler相关的几个类》中KFC售货机的例子来做一个具体的解释,在该例子中,深入理解Apache Mina (4)---- IoFilter和IoHandler的区别和联系(2),客户端需要想服务器发送查询价格的请求,服务器根据接收到的请求查询物品的价格,则IoFilter则是

我们以《与IoHandler相关的几个类》中KFC售货机的例子来做一个具体的解释,在该例子中,客户端需要想服务器发送查询价格的请求,服务器根据接收到的请求查询物品的价格,然后将该物品的价格返回到客户端。客户端在向服务器发送数据前会有IoFilterr将发送的信息序列化为二进制数据,然后有IoProcess发送出去,简化如下:

IoHandler发送客户端数据-->IoFilter进行序列化-->IoProcessor

上面是数据的发送过程,当服务器接收到客户端的的请求数据后,先有IoProcessor将该数据转发到IoFilter,IoFilter将对象进行反序列化,反序列化的结果完成后将数据转发到IoHandler中,过程简化如下:

IoProcessor接收客户度端的数据-->IoFilter进行反序列化-->IoHandler根据请求查询价格这样一个完整的数据请求的过程就完成了。

上面简单介绍了IoFilter和IoHandler在Mina中的作用,前者是数据的转换层,后者是业务层。但是两者在很多地方都有相似之处,为了将两者的区别做更详细的讨论,先给出两者的结构图:

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

图片看不清楚?请点击这里查看原图(大图)。

图中的IoFilter比IoHandler中多出的一个最重要的方法就是 filterWriter(),该方法会在程序调用session.write()的时候触发,该方法的重要之处就在于它表明了IoFilter和 IoHandler的重要区别,即进行IoFilter是数据的收发层,也可以说是一个数据的收发器,而IoHandler则是逻辑层,并不负责数据的收发,如果把IoProcessor说成是底层的数据收发层,则IoFilter则是一个上层的数据收发层。关于IoFilter中on*()的方法的使用和作用请参考帮助文档,这里不再给出具体的解释。

Tags:深入 理解 Apache

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