没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Mina 源码阅读笔记,详情请关注:http://my.oschina.net/ielts0909/blog
写了很多关于 Apache Mina 的文章,为了方便大家阅读,我将关于 mina 的一些文章做点
儿索引。
Mina官网资料-----------------------------------------------------------------
Mina官网是学习mina最重要的地方:Apache Mina
Mina官网上有教你快速上手的quick start:《Quick Start》
Mina官网提供了User Guide,这个手册包含了很多概念和示例:《User Guide》
Mina的应用博客--------------------------------------------------------------
Mina基于NIO开发 中间有个重要的桥梁缓冲区,了解两者不同:《IoBuffer和ByteBuffer》
Mina实现自定义协议的通信、对通信的一些思考:《Mina实现自定义协议通信》、《Tcp
传输下的思考》、《NIO开发的思考》
Mina提供状态机来实现复杂的业务控制:《Mina状态机State Machine》
Mina源码解读-----------------------------------------------------------------
《Mina源码阅读笔记(一)-整体解读》
《Mina源码阅读笔记(二)- IoBuffer的封装》
《Mina源码阅读笔记(三)-Mina的连接IoAccpetor》
《Mina源码阅读笔记(四)—Mina的连接IoConnector》
《Mina源码阅读笔记(五)—Mina对连接的操作IoSession》
《Mina源码阅读笔记(六)—Mina异步IO的实现IoFuture》
Mina 源码阅读笔记(一)-整体解读
今天的这一节,将从整体上对 mina 的源代码进行把握,网上已经有好多关于 mina 源码的
阅读笔记,但好多都是列举了一下每个接口或者类的方法。我倒是想从 mina 源码的结构和
功能上对这个框架进行剖析。源码的阅读一般有如下几种方法:第一,根据问题读源码,这
种方法可能用的最多,哪里有问题了,然后 F3 一步步点进去;第二种,专门为了读源码而
读,从整体到局部,总用法到设计。第三种,可是根据软件的设计特点,根据特点逐一解读。
这几篇文章主要将根据第三种方法进行阅读,因为 mina 的各个模块很有调理,而且我关注
的重点也主要分布在几个核心点上,对我来说,这样的读法更合理。
Apache MINA is a network application framework which helps users develop high performance and high
scalability network applications easily. It provides an abstract ·event-driven · asynchronous API over
various transports such as TCP/IP and UDP/IP via Java NIO.
写过 NIO 的人都知道,NIO 里主要有那么几部分,用于内容切换的各类缓冲区,当然我们印
象最深的就是 ByteBuffer;用于 IO 服务直接连通的通道 Channel,这里有用于文件和网络的
通道;有用于实现 NIO socket Reactor 模式的选择器 selector;和处理字符集的 Charset。而
mina 就是将这几部分有机的整合,实现了这个高性能的框架。
在看代码之前,我们要先了解 mina 到底为我们提供了什么,我按照源码的结构整理如下:
用于缓冲区的
IoBuffer
org.apache.mina.core.buffer
用于提供连接的 service
org.apache.mina.core.service
org.apache.mina.transport.*
用于提供两端状态的
session
org.apache.mina.core.session
用于拦截所有 IO 事件和请求的 filter chain 和
各类拦截器(在 IoService 和 IoHandler 之间)
org.apache.mina.core.filterchain
org.apache.mina.filter.*
用于处理 IO 事件的 handler
org.apache.mina.handler.*
用于实现异步 IO 操作的 future
org.apache.mina.core.future
用于实现
IO
轮询的的
polling
org.apache.mina.core.polling
用户实现代理的
proxy
org.apache.mina.proxy.*
至此,mina-core-2.0.7 中的代码大致就可以分成上述这几类了。而我们对源码的浏览也会按
照这几部分逐一进行。
在开始阅读代码之前,我们再熟悉一下 mina 在通信时会做的事情,这样的事情不是徒劳的,
对过程理解的越透彻对代码的分析也会越深刻,我们不但要学习代码里的设计模式和组织结
构,更要去理解里面的实现逻辑。没装 UML 的工具,就拿 PPT 画了:
这里的变现没有像之前 mina 通信那篇文章里一样,描述具体的编码和解码过程,这个图主
要描述了两端对接的过程,是一个宏观上的通信过程:
1、 图中的一对应的是 service 执行的过程,首先肯定是要建立连接,对于服务端是 Accept,
客户端则是 connect。
2、 图中的二,指的是在每次连接之后就会产生一个记录通信信息的 session,我们看 mina
官方的描述:every time a client connects to the server, a new session is created, and will be kept
in memory until the client is disconnected.
3、 图中的三指的是过滤器链,这里主要实现我们对通信的要求,比如编码、解码、日志等。
4、 图中的四是 Handler,是 filter chain 的最后一步,通过 adapter 接入了 session 的整个生
命周期。
服务器端反之亦然。
上面的图示mina官方给出的,表述的同一个意思。在IoHandler这里mina是这么给出描述
的: The interface is hub of all activities done at the end of the Filter Chain.
分析清楚了整个代码的体系,后面开始,我们就可以针对每一个部分详细分析了。我们会从
最基本的缓冲区开始,这部分相对比较独立,之后会根据连接过程进行一步步分析。
剩余46页未读,继续阅读
玖久_九
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页