您的位置:首页 > 运维架构 > 网站架构

MINA2.0用户手册中文版--第二章 第一节 MINA应用程序架构

2014-10-21 12:57 253 查看
http://blog.csdn.net/lxlzhn/article/details/8179141

(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-11-13,强烈建议看原文)

简介

       人们经常会问,基于MINA的应用程序的结构是什么样的呢?我们可以通过这篇文章来看一看。从MINA的简报中我们可以看到如下的一个MINA鸟瞰视图:



       从这个图我们可以看到,MINA将你的应用(不管是客户端还是服务端)和基础网络层粘合起来,不管这个网络层是基于TCP、UDP和RS-232C串行通信的,还是基于in-VM通信。
      你只需要基于MINA层来设计应用,而不需要考虑网络层操作的复杂性。
      接下来深入的看一下她的细节,下面的图片较多地展示了MINA内部的细节,以及MINA的各个组件的作用:



(这张图片来自Mina_in_real_life_ASEU-2009.pdf)
笼统的来讲,MINA应用分为以下三层:

I/O Service -- 负责实际的I/O操作
I/O Filter Chain -- 过滤器链,过滤或者转换字节为所需的数据结构,或者进行相反操作
I/O Handler -- 负责实际的业务逻辑处理

要创建一个MINA应用,要完成一下步骤:

 创建I/O Service -- 从MINA已提供的Services(*Acceptor)中选择或者自定义
 创建Filter Chain -- 从MINA已存在的过滤器Filters中选择或者自定义来转换请求和相应
  创建I/O Handler -- 编写业务逻辑处理不同的消息

创建一个MINA应用就是如此简单!

通过下面两部分你可以获得更深的了解:
服务端架构:

      在前面的章节,我们已经看过MINA应用的整体架构。接下来,我们将注意力转移到MINA应用的服务端架构:服务端监听一个端口传入的请求,处理这些请求并将回复内容发送回去。它为每个客户端(不管是基于TCP还是UDP协议)都创建并维护一个session,这些将在第四章进一步解释。



IOAcceptor监听网络传来的连接和数据包
对于每一个连接都会创建一个新的session,所有从这个IP地址和端口组合进来的后续请求都交由这一个session处理
session接收到的所有数据包,都要穿越图中指定的过滤器链。过滤器可以修改数据包的内容(如转换成对象,添加或删除信息等)。对于原始字节和高级别对象的相互转换,数据包编码解码器特别有用。
最后,数据包或转换后的对象到达IOHandler,IOHandler用来满足的业务上的需求。

客户端架构:

       简单的看过MINA应用的服务端架构后,让我们再看看服务端的是怎么样的。客户端需要连接到服务器,发送消息并处理响应信息。



首先,客户端创建一个IOConnector(MINA创建她用于连接到Socket),初始化绑定到一个服务器
创建连接时,一个session同时被创建并和这个连接关联起来
应用或者客户端写入到session中,在经过过滤器链之后,数据最终被传送到服务器
所有从服务器端接收到的响应或消息都要经过过滤器链的过滤,之后才到达IOHandler被处理

       当然,MINA提供的远不止这些,只是你可能要关注一些其他层面的问题,如消息的编码解码,如何增加网络配置等。在下面的章节中,我们将在这些方面进一步研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: