MINA框架学习 (一)

MINA 框架是有java语言编写的一个开源的网络框架。由于最近在学习openfire,其中用到了这个框架,所以花了些时间研究研究这个框架。


先来看看在MINA基础上编写的应用 的整体架构:


可以看到,MINA的位置处于 用户程序和Java 网络API之间。其屏蔽了底层网络层的复杂性,给用户程序提供了一个良好的接口。


接下来看看MINA的内部组件结构:


一般来说,在MINA基础上编写的应用程序可以被分为3个层:

  • I/O Service - 执行实际的IO,即从底层读取远程发来的数据或将本地数据写入底层发往远端
  • I/O Filter Chain - 顾名思义,可以看作是一个过滤器链,可以在数据真正被提交到I/O Handler之前进行一些操作或筛选,如将收到的字节转换成上层可以识别的数据结构等。
  • I/O Handler - 真正的处理逻辑存在这这里,会有一些事件供框架调用,如MessageReceived, sessionClose等事件

因此,要编写MINA应用程序,需要依次创建上面三层


接下来看看MINA应用的详细结构,首先来看看Server端的架构:


整个运行过程如下:

  • IOAcceptor 监听网络上到来的新连接请求或数据包
  • 对于一条新的连接,MINA会创建一个新的sesssion,之后该连接上到来的请求均会被提交给这个对应的session
  • 所有在一个session上面收到的packet,都会经过FilterChain中添加的所有的过滤器。过滤器可以被用来修改收到的分组的内容。如将原始字节转换为高层对象等。
  • 最后,转换后的对象被提交给IOHandler进行处理。

再来看看Client端的应用架构:

其运行机制如下:
  • Client首先创建一个IOConnector 对象,以远程服务器的相关信息进行初始化
  • 一旦连接建立之后,会创建一个session关联到该连接上
  • 应用程序向session写数据,这些数据经过FilterChain之后被发往远程server
  • 所有来自远程server的响应/消息 在经过FilterChain之后被提交给IOHandler进行处理
以上便是MINA应用的结构,在后续的文章中会详细介绍其中的三个层次的相关知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值