MINA2 核心源代码分析笔记 - 1. 整体结构与代码分析指引

来源:互联网 发布:软件结构图 工具 编辑:程序博客网 时间:2024/04/30 05:04

 

2008年7月的一个周末,突发热忱,对刚出了M3版本的MINA2起了兴趣。下载了原码以及一部分资料进行研学。当时,做了一部分笔记。但是由于工作等各种原因一年多没有继续。正直2010年新年新春之际,于家中整理当时的笔记。准备后续慢慢整理出来。

当时的nio网络框架并不多,除了MINA2以外还有国内著名的Cindy。两个框架都作了研学,但是Cindy由于代码注释少、以及资料缺乏,作者也消失良久等原因,所以并没有作为重点学习目标。

经过3天对MINA2代码研读,发现的核心部分从来没有一篇doc能够说明清除(至少当时没有看到),而大部分都停留在使用IoHanlder以及IoFilter等外部扩展上。而我将以NIO的网络部分为切入点来介绍其真实的核心部分

整个笔记会分为几部分进行说明:

1. 整体结构及代码分析指引

2. IoAcceptor与IoConnector类族 (IoService)

 

 

1 整体介绍

 

首先查看mina的整体结构,在mina的相关网上中就能找到。

针对整体结构的初步认识:

在这个结构中存在多个IoFilter以及IoHandlerIoProcessorIoService形成完整的IO通道。很多doc都特别强调了其类似于Chainof Responsibility模式的实现。但是这个责任链并不是整个I/O底层核心部分。

 

2 代码分析指引

根据NIO网络开发的基础,其底层应该封装了SocketChannelServerSocketChannelSelectorByteBuffer等类。经过初步代码的查看以及说明文档,包含以上基础类的部分集中在IoServiceIoAcceptor IoConnector)、IoProcessor以及IoSession的类族之上(以下将它们称为IO核心类族)。

而其他的包括各种ListenerFilter提供侦听以及责任链等行为。IoSession类族的实例其实本质上是SocketChannel的封装,此外它增加了write-buffer-queue等附加共功能。而IoAcceptorIoConnectorIoProcessor三个类族完成了selector的封装以及IoSession对象的流转。其他的IoFilter IoHandler等类族的行为其实都是由该三个类的实例触发的。IoAcceptorIoConnector类族都实现了IoService接口,所以概念上其实都是IoService

关键核心类族包括IoAcceptorIoConnectorIoProcessorIoSession等类族。之后将会分别进行介绍与分析。

 

 

原创粉丝点击