Mina源代码分析—概述

MinaApache旗下非常著名的开源的网络编程框架,支持TCPUDP以及其他的一些网络通讯协议,具体的使用说明可以参照UserGuide(http://...)。本文不再介绍Mina的使用,而是记录在阅读源码过程中的一些心得。我们知道网络编程的一般流程如下:

1. 监听端口,等待连接

2. 建立连接

3. 建立线程,读取并处理内容

4. 关闭连接

Mina的处理流程在逻辑上与上面所述基本一致。下面以TCP协议为例,介绍一下Mina框架内部几个重要的组成部分

l AbstractIoAcceptor:服务器,监听端口并等待客户端连接

l IoProcessor:负责监听其所负责的客户端连接(主要监听客户端连接能否进行读或者写),进行实际的IO操作

l IoSession:封装了客户端到服务器的一个连接(connection)以及其他的一些信息。

l IoFilterChain:相当于一个链表,封装了一系列的filterProcessor读取的数据需要经过每一个filter的过滤。

l IoHandler:需要用户实现,最终处理Processor读取的数据。在DefaultIoFilterChain中,IoHandler实际上由最后一个filter调用。可以这么理解,最后一个filter实际是IoHandlerproxy。最后一个filter实际是调用的IoHandler的方法来完成对数据的处理。

下面我们概览一下整体的处理流程。NioSocketAcceptor在内部建立一个线程(Acceptor)来监听端口和建立连接。NioSocketAcceptor接受连接后为每一个连接建立一个IoSessionIoSession建立完成后,会将其分配给一个IoProcessorIoProcessor是独立运行的线程,默认实现中包含在一个工作池当中)。IoProcessor具体负责每一个客户端连接的读写操作。在IoProcessor内部,会将该processor所负责管理的IoSession所拥有的SelectableChannel注册到内部SelectorIoProcessor轮询到就绪信号后,如果信号是可读,则将读取的数据交给IoFilterChain进行一系列的后续处理;如果是信号是可写,则将数据写回客户端。

Mina的主要组成部分和处理流程如上所述,至于每一部分的具体实现在后续的文章中再一一记录。

你可能感兴趣的:(Mina源代码分析—概述)