Mina源码阅读笔记(一)-总体解读

今天的这一节,将从总体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每一个接口或者类的方法。我却是想从mina源码的结构和功能上对这个框架进行剖析。源码的阅读通常有以下几种方法:第一,根据问题读源码,这种方法可能用的最多,哪里有问题了,而后F3一步步点进去;第二种,专门为了读源码而读,从总体到局部,总用法到设计。第三种,但是根据软件的设计特色,根据特色逐一解读。这几篇文章主要将根据第三种方法进行阅读,由于mina的各个模块颇有条理,并且我关注的重点也主要分布在几个核心点上,对我来讲,这样的读法更合理。 apache

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 session

org.apache.mina.core.buffer app

用于提供链接的service 框架

org.apache.mina.core.service 异步

org.apache.mina.transport.* socket

用于提供两端状态的session async

org.apache.mina.core.session

用于拦截全部IO事件和请求的filter chain和各种拦截器(在IoServiceIoHandler之间)

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通讯那篇文章里同样,描述具体的编码和解码过程,这个图主要描述了两端对接的过程,是一个宏观上的通讯过程:

一、  图中的一对应的是service执行的过程,首先确定是要创建链接,对于服务端是Accept,客户端则是connect

二、  图中的二,指的是在每次链接以后就会产生一个记录通讯信息的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.

三、  图中的三指的是过滤器链,这里主要实现咱们对通讯的要求,好比编码、解码、日志等。

四、  图中的四是Handler,是filter chain的最后一步,经过adapter接入了session的整个生命周期。

服务器端反之亦然。

上面的图示 mina官方给出的,表述的同一个意思。在 IoHandler这里 mina是这么给出描述的: The interface is hub of all activities done at the end of the Filter Chain.
相关文章
相关标签/搜索