转自:http://blog.csdn.net/yoara/article/details/37324821
mina组件结构图:
- IoService,负责处理I/O,直接子接口: IoAcceptor,IoConnector
- Filter chain,顺序执行过滤器,编码等
- IoHandler, 负责服务端处理业务逻辑
IoAcceptor:服务端 IoConnector:客户端
服务端结构:
- IOAcceptor 监听来自网络的请求。
- 当新的连接建立时,一个新的session会被创建,该session用作对同一IP/端口组合的客户端提供服务。
- 数据包需经过一系列的过滤器,这些过滤器可用来修改数据包的内容(如转换对象、添加或修改信息等),其中将原始字节流转换成POJO对象是非常有用的。当然这需要解编码器提供支持。
- 最后这些数据包或转化后的对象将交由IOHandler处理,我们将实现IOHandler用于处理具体的业务逻辑。
作用:
开启监听端口,等待请求的到来、处理他们、以及将发送对请求的响应。同时,服务端会为每个连接创建session,在session周期内提供各种精度的服务,比如连接创建时(sessionCreated(IoSession session))、连接等待时(sessionIdle(IoSession session, IdleStatus status))、
(sessionClosed(IoSession session))等。mina的API为TCP/UDP提供的一致性Server端操作。
客户端结构:
- 客户端首先需要创建IOConnector对象,绑定服务端的IP和端口。
- 一旦连接成功,一个于本次连接绑定的session对象将被创建。
- 客户端发送给服务端的请求都需要经过一系列的fliter。
- 同样,响应消息的接受也会经过一系列的filter再到IOHandler被处理。
发出请求,等待请求响应;