基于SOAP的Web Service消息处理优化研究

2013-03-27 11:35郑学伟
电大理工 2013年4期
关键词:数据格式序列化吞吐量

郑学伟

辽宁广播电视大学(沈阳 10034)

随着信息技术日益融进我们的工作生活中,各种企业商业信息服务应用平台在社会发展中起着越来越重要的作用,各个企业的信息系统在选择开发平台、通讯协议和开发语言方面都有其自己的方式,“信息孤岛” 的情况日益严重,大量的信息数据冗余出现,随着网络信息交换的日益频繁,越来越多的企业希望自己的系统具有很强的兼容能力,能够实现跨平台、跨语言,从而是不同系统间的数据交换更加高效方便。

Web Service是基于网络的、分布式的模块化组件,是一种基于Web的中间件技术。提供给外界一个接口,不同的客户可以通过编程的方式来调用它提供的服务,被外界日益广泛接受,越来越多的运用在各种服务程序间的数据通信中。Web Service的主要核心技术是XML、SOAP和WSDL。SOAP协议是访问 Web Service最常用的协议。数据格式基于XML文档,具备互操作行格式,各个基于不同平台的服务程序可以在彼此不是同一数据标准的情况下进行无缝的数据交换。但是也正是由于SOAP具有这一特性导致SOAP的数据交换效率较为低下。SOAP消息的格式是基于XML,SOAP在进行数据通信时必须先对传送数据进行格式化。即将所有数据格式转换为XML数据,而XML格式的有点是数据可操作性,而缺点则是占用数据交换空间大。同样,在进行SOAP数据交换时,接收端在接收XML消息后必须将接收到的数据进行反操作。SOAP消息交换程序直接降低了Web Service的工作效率。因此,提高Web Service性能的关键就在于提高对数据进行XML格式化和反操作的速度。

1 Web服务性能指标

Web Service性能主要有两项:一是Web Service运行环境实现服务调用功能的能力;二是其执行功能的能力的度量。响应时间要求越短越好,吞吐量则要求在相同响应时间内越好。响应时间是指在发送端将消息发出后接收到接收端的回复这一周期。影响响应时间的因素很多,包括网络延迟时间(通讯网上的传播时延和接口的传输延迟),以及服务端(服务执行)和中间节点(集线器、路由器和调制解调器的开关时间)的处理延迟。延迟的长时间处理是影响响应时间的关键因素,也是最难解决的地方。吞吐量是指每个时间单位执行处理的请求数(例如:每秒的 I/O操作数),它通常是在服务器端进行评估。有很多吞吐量的测量因素是以工作单位的定义而定,通常的因素有:点对点的吞吐量(传输性能的量化)、节点吞吐量(处理性能的量化)和系统整体的吞吐量(又名系统的一致吞吐量)。系统整体的吞吐量受到传输和处理链中局部吞吐量这些小的执行元件的限制。

2 Web服务消息处理优化研究

SOAP协议只定义了数据格式的基本,而不是精确地绑定。也就是说SOAP协议的框架规范在具体操作时极富于灵活性。对于任何数据的路由、防火墙的通道以及数据的可靠传输SOAP都没有进行硬性的规定。SOAP协议中数据的定义的本质上就是一条以XML形式的文档。一条SOAP消息就是一个普通的XML文档,在数据传送过程中相同数据的重复调用大量的发生在SOAP传输过程中,可以利用这一特点,将大量的重复调用数据通过一种机制嵌入SOAP通信过程中。在SOAP通信过程中,客户端发送SOAP请求时,可以预设一个信息模板,在客户端将数据发送出去后,模板并不清空,而是完整的保留下来,将数据进行XML格式化的结果保存在模板中,客户端在进行数据发送时,可以将待发送的数据同模板进行比较,如果再一次通信时处理的数据同前一次数据相同或者结构相同时,可以直接将信息模板进行套用,不需要对待处理的数据进行完整的处理,要实现上诉的功能需要进行以下几方面处理:将已经发生过的数据进行抽取,进行数据命名后进行标注,针对不同的服务方式进行不同的模板,在后续构建XML时在调用标注时套取模板,避免了发送类似 SOAP消息时重新进行序列化操作的开销。模板建立好以后,客户端再进行数据发送时,对于下面要发送的数据,在进行数据序列化之前,首先要在数据存储表中进行迭代查找。查找到相同的标注名之后,在对模板中的方法名进行进一步的查找,如果有目标方法,则直接套用模板进行数据的序列化,如果没有,则对新的数据格式进行序列化,再讲序列化的方法以新的标注存储进模板中。每一次遇见新的数据格式,都要将数据格式以模板的形式存储进数据序列中,存储空间满时,为防止数据溢出导致信息传输崩溃,根据“最近最久未使用(LRU)”方法,将一段时间内最少使用的模板删除掉,系统需要根据LRU将系统的数据调用频率进行排序,这样可以保证模板的使用效率,当需要删除很少使用的模板是,可以将数据链表中模板进行排序,尾部为最少使用的,首部始终为上一次使用或刚刚建立好的。

数据信息的发送方通过模板的使用减少了数据操作时间后,如果信息的数据接收方没有同样进行反序列化操作,则对于数据的整体性能提升意义不大。SOAP中数据通信的反序列化操作以如下方式进行,在反序列化阶段也可以使用基于模板的方式来提升性能。该方法的大致描述如,反序列化数据的模板,模板是通过预先定义好的 SOAP消息的 XML Schema获得的,并为每个服务程序制定模板。

模板是由不变的标签部分和变化的数据序列化方法组成。tSoap处理器提取接收到SOAP请求消息中第一个标签块的内容和模板是相同的。tSoap处理器从请求消息中提取变化的部分后将提取下一个标签块。当 SOAP消息中有多个标签时,则需要对待反序列化的数据进行重复操作,一直到套用到合适的模板为止。如果 SOAP消息中只有一个标签时,到这步就结束了。然后tSoap处理器反复执行前边操作,直到SOAP请求消息的结束部分。验证是通过比较请求消息和模板的标签块的字符串。验证成功,则说明两个字符串匹配。另一方面,如果两个字符串不匹配,也就是验证失败,则模板不可用。tSoap处理器提取 SOAP消息的结构和模板进行比较,另外,由于验证是通过把每个标签块的字符串和模板的标签块进行比较,因此,和现有验证每个标签的方法比较,tSoap方法可以有比较好的性能改进。可以用现有的 SOAP处理器进行服务程序的验证,因此,tSoap方法减少了构建系统的成本。

Web Service性能测试主要从响应时间和吞吐量两个方面进行测评,这种方案在这两个方面能够改善SOAP消息处理的性能,进而对整个Web Service的服务质量得到了一定的提高。基于模板的方法在吞吐量方面是其他方法的1.5倍。基于模板的方法在吞吐量方面同样更是比其他方法效果好。当消息的容量大小逐渐递增时,基于模板的方法和其他方法的吞吐量曲线都逐步的减小,但比其他方法每秒处理的事务数要多出几倍。

3 结语

随着信息技术的飞速发展,Web服务以其特有的跨平台、快语言的便利特性正在得到越来越广泛的应用,而应用的要求也越来越高,各个服务系统SOAP的应用已经不仅仅满足于其原有的特性,正在要求其具备更快的反应速度与信息处理能力,因此如何提高基于SOAP的Web Service信息通信能力是目前数据通信研究的热点所在,基于模板的序列化与反序列化SOAP数据处理模式对于Web Service服务效率的提升有着非常明显的改善。

[1]柴晓路,梁宇奇.Web Servicess技术、架构、和应用[M].北京:北京电子工业出版社,2003.

[2]余晓峰.SOAP安全性模型的设计与实现[D].杭州:浙江大学,2003.

猜你喜欢
数据格式序列化吞吐量
如何建构序列化阅读教学
2017年3月长三角地区主要港口吞吐量
基于RFID的户外广告监管系统的设计与实现
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
Java反序列化漏洞探析及其修复方法研究
Java 反序列化漏洞研究
作文训练微格化、序列化初探
基于特征库的测井数据格式自动识别与转换方法
2014年1月长三角地区主要港口吞吐量