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

来源:互联网 发布:java类构造器 编辑:程序博客网 时间:2024/04/28 02:30

简介

       人们经常会问,基于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应用,要完成一下步骤:
  1.  创建I/O Service -- 从MINA已提供的Services(*Acceptor)中选择或者自定义
  2.  创建Filter Chain -- 从MINA已存在的过滤器Filters中选择或者自定义来转换请求和相应
  3.   创建I/O Handler -- 编写业务逻辑处理不同的消息
创建一个MINA应用就是如此简单!
通过下面两部分你可以获得更深的了解:
服务端架构:
      在前面的章节,我们已经看过MINA应用的整体架构。接下来,我们将注意力转移到MINA应用的服务端架构:服务端监听一个端口传入的请求,处理这些请求并将回复内容发送回去。它为每个客户端(不管是基于TCP还是UDP协议)都创建并维护一个session,这些将在第四章进一步解释。

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

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

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

       当然,MINA提供的远不止这些,只是你可能要关注一些其他层面的问题,如消息的编码解码,如何增加网络配置等。在下面的章节中,我们将在这些方面进一步研究。
原创粉丝点击