MINA网络框架和RMI的对比研究
来源:华佗健康网
第27卷第9期 2010年9月 计算机应用与软件 Computer Applications and Software V01.27 No.9 Sep.2010 MINA网络框架和RMI的对比研究 杨铁军 黄 琳 (桂林工学院电计系 广西桂林541004) 摘 要 分析比较了MINA网络应用程序框架和RM1分布式对象技术的网络中间层应用特点。首先剖析了这两种技术的实现 原理,指出它们同属于网络中间层技术;然后分别运用这两种技术设计了一个简单的请求一应答系统。通过对比研究,MINA框架 更接近于套接字层,具有灵活、高性能等特点;而RMI更接近于应用层,简单易用。 关键词 M/NA网络框架 远程方法调用 中间『牛 CoMPARATIVE STUDY oN MINA AND RMI Yang Tiejun Huang Lin (Department of Electronics and Computer Science,Guilin University of Technology,Guilin 541004,Guangxi,China) Abstract The application features of network’S middle layer are analyzed,the middle layer refers to the framework of multipurpose infra— structure for network applications(MINA)and the distributed objects technology of remote method invocation(RMI).Firstly,the implemen- tation principles of MINA and RMI are antomised,stating that they both belong to the technology of network’S middle layer.Secondly,two simple request—response systems aye designed based on the above two technologies respectively.The comparative study on the systems shows that the MINA framework is much closer to the socket layer and is flexible and efficient,and the RMI is a little bit closer to the network appli- cation layer and is simple and easy to use. Keywords MINA framework Remote method invocation Middleware 编程接口,如MINA架构和RMI等。 0 引 言 面向网络编程是Inteacrt飞速发展的必然趋势。从最初的 1.1 M A网络框架 MINA是由自由软件组织Apache开发的一种异步网络应 用程序框架,基于Java技术实现 。该框架的特点是:运用Ja. va异步输入输出(NIO)技术(底层为socket),可支持TCP/UDP 协议;用户可以根据实际需要选择符合自身的线程模型,灵活实 现多线程模型;支持多种编码方式,如字节流、文本,或者更加复 串口通信,到现在庞大高速的互联网,我们经历了网络世界发展 的几个不同阶段。随着TcP/Jp的盛行,套接字(socket)诞生 了,它是步入网络编程的一扇门。然而,用这样一个底层网络接 口直接实现复杂的应用需要花费较大的代价。于是,各种中间 层网络通信技术层出不穷,如分布式对象模型(OMG的COR— BA 、微软的DCOM、.NET Remoting和Sun的Java RMI等)和 杂的如ASN.1编码等。MINA框架主要由1/O服务管理(1oSer- vice)、/O过滤器链(I1oFiherChain)、I/O处理器(IoHandler)和 网络应用程序框架技术(如ACE、MINA等)。本文将分别使用 MINA框架和RMI技术来实现一个简单的请求一应答系统,通 过比较两种技术在实际应用中的不同来说明这两类技术各自的 特点和应用场合。 I/0会话管理(IoSession)等模块组成。这些模块的运行机制如 下:IoService负责与远端客户进行通信底层操作,远端发送的数 据首先由IoService接收并转化为系统内部可识别的事件,IoSer- vice有两个实现类IoAcceptor和]oConnector,分别对应服务器端 和客户端的I/O服务管理类;接着,IoFilterChain接收由loser- vice转化的事件,并使用链中包含的过滤器(IoFiher)进行处理, 1关键技术 套接字是实现网络通信的应用程序基本接口,封装了对通 如日志记录、编码/解码、压缩/解压缩和黑名单过滤等;然后,过 滤器链处理后的事件交给IoHandler进行处理,IoHandler是业务 信数据报文的底层操作。起初只支持TCP/IP协议,现在已经发 展到可以支持多种协议。套接字可以帮助开发人员高效实现计 算机进程间通信,使用IP地址和端口号作为通信接口,通过该 接口可以与任何一个具有套接字接口的计算机通信。在应用开 发中,可以对套接字的输入/输出流分别进行读、写操作,就像对 逻辑的主要实现模块。处理完成后需要发送响应给远端,由Io- Session负责,即使用Ioesssion向远端发送的消息,该消息的发 送顺序与接收的处理J顺序刚好相反,如图1所示。 收稿日期:2009—02—23。杨铁军,博士,主研领域:软件工程,数字 图像处理。 文件操作一样。在它的基础上,衍生了多种更高级的应用程序 第9期 杨铁军等:MINA网络框架和RMI的对比研究 223 息帧,考虑到网络会延时,所以一般使用流式解码器进行解码, 即码流如果不完整,则保留当前码流并等待剩余码流都接收后 再进行解码。解码后为消息帧对象。然后,服务器创建监听型 I/0服务IoAeceptor,并指定对应的IoHandler,加入该编码解码 过滤器。最后,在IoHandler中对消息帧进行业务处理,可以根 据不同的帧类型细分子处理器。处理完成后,使用IoSession向 远端发送响应。于是,基于MINA的服务器就设计完成了。 2.2基于RMI的服务器 图1 MINA系统结构 1.2远程方法调用(RMI) RMI是一种基于Java技术的分布式对象模型,由Sun公司 与MINA相比,基于RMI的服务器设计要简单得多。服务 器的业务逻辑处理封装在接口中,并公开该接口供客户端调用, 接口的输人参数即为请求,返回值即为响应。底层的通信由 RMI基础设施来完成,对用户完全透明。RMI的使用方法可以 实现 。。RMI也是基于套接字的,是界于低层TCWIP通信层 和高层应用层之间的一个中间层。RMI技术使我们可以将注意 参考文献[4],这里不做介绍。 力集中在业务逻辑上,而无需为网络底层的请求/应答协议增加 投入。RMI技术使得程序员调用远程接口时,就像在调用本地 方法,而实际上是在调用时将相应的参数发送到远程对象,是远 2.3对比分析 MINA与RMI同处于套接字网络层和应用层之问的中间 层,但是所处位置还是有明显的区别(如图3所示)。MINA框 程对象在进行处理,最后将结果返回给调用者。RMI技术的层 次结构如图2所示。RMI系统实现了由客户机到服务器通信的 细节:通过端头(stub)与客户机交互,使用框架(skeleton)与服 架更靠近套接字网络层,如果说 l RMI处于第2层,那么它位于 r…应用层 ……l 一.1 务器交互。传输层对使用RMI系统的用户来说是透明的,用户 甚至不用知道远程对象的位置。RMI作为一种分布式对象模 式,它相对于DCOM等分布式对象模型的优势是:对象可以在 1.5层,MINA框架的使用虽然 : 曼 ll; 较为复杂,但是它提供了非常大 . ± 的灵活性,如用户可以根据自身 :L 需求定制通信协议,包括不同的厂— 丽 : : 远程方法调用中作为参数传递。与纯套接字通信相比,RMI的 使用要更加简单、方便。 编码方式、加密算法、日志记录 一 等,实现起来非常灵活、方便;而 图3 MINA与RMI层次比较 中申[二蔓 虚拟连接申 庠 RMI处于相对的高层,它的目标是使远端用户像调用本地接口 一样使用远程服务,所以用户的操作被大大简化,同时也失去了 一定的灵活性。所以,MINA更多的应用于应用协议的实现,如 邮件服务器、流媒体服务器和即时通信服务器等;而RMI则更 多地应用于企业级的信息系统中。 在实例系统中,我们基于这两种中间层技术设计了一套简 网络连接—-{二 图2 RMI系统结构 单的请求/响应协议,即当客户发送一个字符串给服务器时,服 2应用实例 这里分别使用这两种技术来实现一个简单的请求一应答系 统,来比较MINA框架和RMI在应用上各自的特点。该系统分 为两部分:服务器和客户端。服务器主要实现对客户端请求的 接收与处理,并将处理结果返回给客户端等;客户端主要实现与 客户的交互(接收客户的请求输入、显示给客户需要了解的内 务器就知道怎样来进行处理,相反客户端也知道怎样处理服务 器返回的字符串。这种通信模式是最为常见的。如果直接基于 socket来实现,那么实现该协议不仅要处理业务逻辑,而且对底 层的socket操作也很费时,特别是调试方面;而基于MINA和 RMI技术来实现,用户可以把大部分精力集中于对业务的处理, 避免了复杂耗时的socket编程,大大提高了开发效率。 在基于RMI的系统中,RMI本身就实现了一个较复杂的网 容等)、封装并发送客户提交的请求等。因为客户端是服务器 的简化版本,这里仅讨论服务器端的设计。 络中间层。它可以远程传输对象,可以像调用本地方法一样调 用远程方法,使我们可以专注于业务逻辑,无需花费很大代价去 完成套接字的底层操作。虽然RMI的操作简单性失去了一定 2.1基于MINA的服务器 服务器端主要实现:监听客户端发送的请求;根据客户端发 送的请求进行相应的处理;将处理结果返回给客户端等。由于 是多用户并发访问,所以服务器需要支持并发处理,这可以通过 MINA框架的多线程模型快速实现。基于MINA框架构建该服 的灵活性,但可以借助应用服务器来弥补。例如同步数据库、连 接的重复使用(连接池)、异步消息处理和事务处理等。实际上 已经有很多应用服务器(如IBM Websphere、Weblogic和JBoss 等)实现了这些功能,借助于这些强大的网络中间件,就可以更 加高效地实现用户需求。 务器要做的工作较多,当然较直接套接字编程要少得多,例如监 听客户端请求,只需要创建监听型I/O服务IoAeceptor,并指定 对应的IoHandler即可。稍微复杂一点的是对客户端请求的处 理及响应,下面以自底向上的顺序来介绍基于MINA框架的系 统设计。 首先需要构造编码器和解码器。编码器将消息帧编码成码 流,消息帧可以采用自定义方式编码。解码器将码流解析成消 3结论 本文主要采用MINA框架和RMI技术构建了一种简单的 请求一应答系统,分析了MINA框架和RMI技术在网络应用中 (下转第239页) 第9期 3.3实验结果分析 刘凤龙等:基于EMD与PNN的机械故障检测 表2识别对比实验结果 239 本文对滚动轴承常见问题 进行了模拟实验。其信号状 态为正常信号和三种故障信号:内圈点蚀、外圈划痕、滚动体划 痕。采样频率为10kHz,一次采集10000个数据点。通过EMD 特征提取方式 不经过EMD分解 经过EMD分解 分类算法 BP PNN 识别正确率 76.1% 87.5% 分解,得到8个IMF分量,因此可以把PNN拓扑结构做如下设 置:输入层为8个节点,分别对应8个IMF分量;输出层为4个 节点,分别对应正常状态和3种故障状态,模式层和累加层的节 点数会随样本空间的变化而变化。 BP PNN 89.7% 98.2% 4结论与展望 为了验证EMD分解对故障信号分析的效果,本文在训练阶 段进行了对比实验:由图4和图5可知,当预定目标精度为l0-3 时,未经EMD分解的原始信号需要约300个时间单位的训练才 能达到;而经过EMD分解后的IMF只需要120个时间单位即可 达到1O 的预定目标。这是因为原始信号的特征量并不明显, 神经网络需要较长的时间才能把握信号的特征,而EMD分解将 信号中不同尺度的IMF逐一分解开来,分离了原信号中不同的 局部特征,因此训练的效果要明显优于前者,具体训练效果如表 1所示 图5经过EMD分解的IMF分量训练误差曲线 在识别过程中,由于利用了差分演化算法对平滑参数 进 行了处理,因此将达到较高的识别率;同时,为了验证算法,本文 与BP分类算法进行了对比实验。由表2的对比实验结果可知, EMD分解以及改进的PNN算法都能有效的提高识别率,而将 两者结合起来更是达到了98.2%的识别率。 表1切I练对比实验结果 特征提取方式 训练正确率 训练次数 不经过EMD分解 1oo% 30o 经过EMD分解 100% 120 本文将EMD分解及PNN算法结合起来进行故障检测,实 验结果表明该方法是有效的。由于EMD分解后的IMF分量所 含信息量自上而下是逐级递减的,因此,在保证识别率的基础上 可以考虑只用一部分而非全部IMF来设计PNN网络,这样可以 进一步提高识别速度。 参考文献 [1]Huang E,Zheng S,Steven R,et a1.The empirical mode decomposition and Hilbert spectrum for nonlinear and non--stationary time series analy-・ sis[C]//Proceedings of the Royal Society of London Series,1998, 454:903—995. [2]Paul A Hwang,Norden E Huang,David W Wang.Application of EMD method and Hilbert spectrum to the fault diagnosis of roller bearings [J].Mechanical Systems and Singal Processing,2005,19:259—270. [3]赵协广,戴炬.基于EMD分解与小波包的滚动轴承故障诊断[J]. 轴承,2009(7):33—37. [4]于德介,程军圣,杨宇.一种基于EMD和SVM的齿轮故障诊断方 法[J].机械工程学报,2005,41(1):140一l44. [5]Specht D F.Probabilistie Neural Network[J].Neurla Network,1990,3 (2):109—118. [6]杨鼎强,肖淑苹,蒋加伏.基于差异演化概率神经网络的纹理图像 识别[J].计算机工程与应用,2008,44(11):179—181. [7]Yang H Y,Mathew J,Ma L.Fault diagnosis of rolling element bearings using basis pursuit[J].Mechanical Systems and Singal Processing, 2005,19:341—35. (上接第223页) 各自的特点。套接字是比较底层的通信接口,而Java RMI作为 一种分布式对象模式,提供了强大的应用层与TCP/IP通信底层 之间的中间层,使程序员可以将注意力集中在业务逻辑上;而 MINA框架提供了一种灵活的、可扩展的网络中间层,可以帮助 用户快速构建高性能的网络应用程序。通过比较这两种类型的 网络中间层技术,可以为构建不同类型的网络系统提供有利的 参考。网络中间层技术的发展是实现高效、安全的网络通信的 强大推动力。 参考文献 [1]姚跃华,陈一栋,李慧芳.分布式对象模型CORBA和RMI的应用 研究[J].计算机工程与科学,2008,30(09):151—153. [2]剧忻,苗放.基于MINA开发高性能网络应用程序——以实现 XMPP协议Openfire3.3.3为例[J].重庆工学院学报:自然科学, 2008,22(10):121—125,160, [3]杨晖,卢苇,严斌宇,等.RMI技术研究及其在EJB中的应用[J]. 四川大学学报:自然科学版,2003,40(01):45—50. [4]杜风雷.用RMI开发基于Java的分布式应用[J].微电子学与计 算机,2006,23(07):72—75.
因篇幅问题不能全部显示,请点此查看更多更全内容