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以及IoHandler、IoProcessor、IoService形成完整的IO通道。很多doc都特别强调了其类似于Chainof Responsibility模式的实现。但是这个责任链并不是整个I/O底层核心部分。
2 代码分析指引
根据NIO网络开发的基础,其底层应该封装了SocketChannel、ServerSocketChannel、Selector、ByteBuffer等类。经过初步代码的查看以及说明文档,包含以上基础类的部分集中在IoService(IoAcceptor IoConnector)、IoProcessor以及IoSession的类族之上(以下将它们称为IO核心类族)。
而其他的包括各种Listener、Filter提供侦听以及责任链等行为。IoSession类族的实例其实本质上是SocketChannel的封装,此外它增加了write-buffer-queue等附加共功能。而IoAcceptor、IoConnector、IoProcessor三个类族完成了selector的封装以及IoSession对象的流转。其他的IoFilter IoHandler等类族的行为其实都是由该三个类的实例触发的。IoAcceptor、IoConnector类族都实现了IoService接口,所以概念上其实都是IoService。
关键核心类族包括IoAcceptor、IoConnector、IoProcessor、IoSession等类族。之后将会分别进行介绍与分析。
- MINA2 核心源代码分析笔记 - 1. 整体结构与代码分析指引
- MINA2 核心源代码分析笔记 - 2. IoAcceptor与IoConnector类族 (IoService)
- opendaylight(Li) l2switch 源代码分析(1)--代码的整体结构和整体pom.xml
- ffdshow 源代码分析1 : 整体结构
- MediaInfo源代码分析 1:整体结构
- LIRe 源代码分析 1:整体结构
- MediaInfo源代码分析 1:整体结构
- LIRE源代码分析 3:整体结构
- Uboot 源码分析----代码整体结构分析
- Uboot 源码分析----代码整体结构分析
- Launcher3 源码分析(一) 整体结构及核心类
- Media Player Classic - HC 源代码分析 1:整体结构
- XBMC源代码分析 1:整体结构以及编译方法
- flume架构与核心组件源代码分析
- 【双目视觉探索路6】整体代码结构分析与作业完成(未完待续)
- FFplay源代码分析:整体流程图
- FFplay源代码分析:整体流程图
- FFplay源代码分析:整体流程图
- 传智播客-web service(8)-利用xfire开发WS应用
- 链栈的实现
- Softap_research_basic_tech
- 中国佛学震世禅语
- 让VB6/VBA 编辑器支持鼠标滚轮
- MINA2 核心源代码分析笔记 - 1. 整体结构与代码分析指引
- 实现单元格下拉菜单的3种方法
- 图:双屏前期设置方法[又名:系统扩展桌面设置方法-双屏双显扩展桌面技术前期设置方法-PPT分屏技术设置方法]
- PowerPoint的一些麻烦
- Windows Azure的一些简单知识
- 这个年还真冷
- 2010的第一次思想触动
- 关于Windows phone 7 series开发方面的传言
- 人类无法抗拒的10种心理