MINA简单的介绍
本篇对MINA进行介绍:
上图说明的是MINA在我们的项目中所处的层次。相当于对底层的通信系统做了一个封装。由于MINA暴露给用户的接口足够友好,所以MINA使用起来相当方便!
MINA架构图:
![](https://images2015.cnblogs.com/blog/411850/201602/411850-20160216103740423-54219981.png)
一个框架最重要的应该是它的数据流动和线程结构,数据流动能够很好的帮助理解框架,线程结构是理解工作方式的必要前提!
1. MINA数据流
在MINA连接程序中,每个用户在连接的时候会建立一个TCP连接, 也就是建立了一条通信管道,客户端(remote peer)在给服务器发送消息的时候所经历的流程如上所示:
在服务端会经过一个IoFilterChain, 也就是java中的责任链模式, 也就是数据包会经过链路上的每个filter进行处理, 比如(编码,解码,打印数据包内容)。你可以自定义
各种需要的filter。
MINA暴露给用户的接口是IoHandler, 在IoHandler中MINA为我们提供了几个常用的事件接口, 比如连接建立, 收到消息, 捕获到异常等等, 这些就是我们可以插入代码
到MINA框架的地方, 数据包在MINA在框架中经过各种filter后到了我们自定义的IoHandler中,控制权就转移到了我们的手中!
一般MINA框架给我们提供插入点就是在filter链上插入filter和在IoHandler实现各种事件接口。
2. MINA线程结构
MINA采用的javaNIO程序, 作为一个服务器框架, 那么MINA必须有一个监听的线程,监听的线程负责响应客户端的各种连接事件。
在接收到各种连接事件后,MINA会分派一个processer线程来处理这个客户端连接上的各种读写事件,这里MINA会启动和CPU核数相关数量的线程,而且一个processer线程
会处理多个客户端连接读写事件。processer线程在处理读写事件的时候就是按照上面的数据流来进行处理的、于是整个结构就清晰了。
上面说明了Mina的使用方式,省去了JAVA NIO细节, 因为要使用的话基本就只需要做到这个地步就可以了。 如何感兴趣可以去阅读MINA的源码!
如果只需要使用MINA的话,那么上面的数据流细节和线程细节已经能很好的阐释MINA框架了。