摘 要:提出一个应用于移动网络的Web服务交互通信体系架构,其将基于XML的系统通信的负担从移动客户转移到外部中间件上,该中间件像网关一样,使用快速的二进制协议以客户/服务器方式与移动设备进行轻量级通信,并同时负责解析对Web服务的请求。
关键词:Web服务;面向服务的体系结构;移动计算;移动设备
面向服务的体系结构(SOA)技术包含了一个灵活的应用组件集合,这些组件相互独立并可以互操作,公开访问接口,提供特定功能服务,更好地满足了大企业系统的业务需求。由于基于SOA构建的系统能更灵活地随业务需求而变化,有效解决了传统大规模系统中任何子系统的细微需求变化及系统反应极度敏感的问题。
将SOA方法引入到Web,产生了Web服务技术。该技术通过Web为运行在不同平台上的应用之间提供了互操作和信息交换。由于建立在XML和HTTP标准协议上,因此Web服务容易开发并通过Web在任何地方访问。
Web服务技术优势明显,引领企业业务主导权,具有高度互操作性、服务组件可发布性及易集成等特点。它也存在不足,即Web服务用户面对通信性能弱、需处理基于XML的额外负担。近年来,移动应用开发领域已出现过量的可用Web服务,虽然移动设备硬件能力已大大增强,但由于性能问题和移动平台缺乏本地化开发支持,易使用的Web服务却渐渐偏离大多数移动平台标准特征。
1 Web服务概述
Web服务主要使用HTTP和XML技术,为不同硬件及平台上的应用系统提供标准方式的交互操作,它像自包含的部件,可以在Web上发布、定位和调用,为应用在Web上提供一个独立于硬件平台和操作系统的标准通信机制。
由W3组织提出的Web服务构架,依据一些Web标准,如XML、SOAP、WSDL和UDDI,允许服务可以被任何应用描述、查找和集成。Web服务的实现分成SOAP Web服务和REST Web服务两类。基于SOAP的Web服务适合在复杂的多层计算环境中实现SOA,具有更大的灵活性和较低的集成成本,但在与轻量级信息系统通信时比REST Web服务要求更大的性能。
基于SOAP的Web服务主要有额外处理XML的性能问题和通信中缺乏事务支持两种不足。在繁忙和不稳定的网络上,相对于传统方法的分布式计算(如CORBA或DCOM),与Web服务通信必须忍受低性能,这是因为基于XML的信息系统追求简单而不是效率。而且,当对XML请求/响应编码/解码的额外负担时,肯定影响整个Web应用的性能。与Web服务通信中缺乏事务支持,致使这种数据交换协议没有状态,正如Web服务提供者和Web服务用户彼此不知相互状态。
当今移动设备中无线网接入已成为其标准特征,移动Web服务应用的挑战可归结为两点:移动硬件的能力(包括处理能力和网络能力)和对移动平台的本地化支持。另外,对资源约束限制的移动设备应考虑采用已有的标准。
2 移动设备及平台现状
2.1 移动设备及其局限性
移动设备的能力不断增长,并满足移动性和连接性等灵活性上的相关需求。未来几年内,蜂窝式无线通信网络的数据流量有望保持几十倍增长,数据流量通常来自Web浏览,尤其是观看视频。
现在的智能手机具有最新式的硬件特征,从移动性的角度讲,智能手机是市场上最吸引人的移动设备。智能手机的计算能力有显著的提高,如快速的处理器、更大容量的ROM和RAM,它的发展趋势是增强的无线网络通信能力和高度联接性等。移动设备的主要硬件限制且必须解决的是巨大的电池消耗问题,它导致了电池寿命缩短、无线网络带宽低和无线连接不稳定等问题。只要有电池自主性,就可以达到相当好的移动性和连接性,稳定地与无线接入点连接,很少或没有延迟地使用Web服务。
2.2 移动平台的支持
为在移动平台上开发Web服务客户程序,现讨论它们提供的现有支持。
Sun公司将Java技术用于移动设备,用标准模板访问现有的Web服务,通过扩展J2ME平台带有的JSR 172[1],被命名为J2ME WSS(Web Services Specification)的请求,使J2ME转成为标准的Java Web服务平台,这些让开发者容易创建客户程序,用于支持Java的移动设备。WSS是移动服务架构平台的一部分,设计它面向移动设备的新技术和服务,为所有支持Java的移动设备提供标准应用环境,用于满足市场发展。
在支持Web服务应用方面,Apple公司在移动iPhone平台上几乎没做努力。SDK没公开其内置的C对象库,无法创建简单的Web服务客户程序。而且,当实现必需的基于XML的消息机制时,很少用到Cocoa构架的NSXML库。当需解析XML时,libxml2或KissXML库肯定优先使用。iPhone平台的工作区包括现有的应用功能程序的使用,如wsdl2objc[2],它派生出代理类,以访问源自WSDL规格的服务。派生类包含Web服务公开的所有方法。不过,开源社区作了明显的努力,用于创建易于使用的框架,以访问Web服务。
事实也证明,Google公司没使SOAP Web服务应用对Android平台开发者社区是一个容易的任务。SDK甚至没打包成工具包为Web服务接口产生派生类。在开发社区中,Android平台被认为是最适合在移动空间中作为Google服务的发布者。
在Windows Mobile平台上应用Web服务是容易的工作,因为.NET框架适合同步和异步访问。与Windows Phone 7平台类似,通过简单引用Web服务生成服务接口开放的代理类。
Nokia从Symbian系列60平台提供Serene框架,容易创建访问Web服务的客户程序应用。该框架依赖J2ME JSR 172规格,提供创建相关丰富Web应用的全部支持。
除了Windows和Nokia平台提供支持,允许开发人员专注于设计和创造,其他平台缺少本地化支持,开发SOAP Web服务客户程序要求更多的额外努力。而且要在所有移动平台上实现Web应用既麻烦又耗费资源,特定的平台需要特定的工作环境。
3 相关工作介绍
目前,开源社区提出的两类解决办法是解决问题的基础,据此进行简单改编,针对基于SOAP的Web服务的局限性,为大多数移动平台能应用。
3.1 支持RESTFul架构
参考文献[3]提出的Web服务架构通过修改现有的SOAP Web服务解决通常SOAP消息系统的两个资源耗费问题,即由于密集的SOAP请求封装机制带来HTTP通信负担、移动设备端SOAP响应的解析,以适应移动设备的低资源特点。参考文献[4]的方法依据的是RESTful架构,也因SOAP协议的传输中立性而带来一系列的问题。通过为每类交互活动明确地分配另一个截然不同的URL,现有的SOAP接口甚至优化在RESTful架构中。对同步和异步RESTful实现都进行了性能测试,结果很乐观,随着HTTP负载的减轻,从同步调用高达96%负载,减至异步调用的75%。
3.2 使用移动Web服务代理
另一解决办法是在移动网络中引入Web服务代理,它像移动设备和Web服务之间的网关一样[5]。代理从移动设备接收输入参数,调用请求的服务,并向移动设备返回结果。结果令人满意,因为消除了移动设备端的XML处理,获得了改进性能。性能测试显示,响应时间很少且数据负荷低。
目前,研究领域存在以上两种办法的主要原因是有个通用理念,即移动设备上任何可行的通信架构必须包括中间件,它存在于设备之外,负责与Web服务通信且必须处理XML的重担。那些中间件像网关服务器一样工作,与移动设备轻量级通信,并承担检索来自Web服务的响应。这种类型架构对确保与Web服务更可靠的通信会有更大的机会。无线通信是移动设备上易于波动的行为,会造成无线访问出错。网关将最大可能地运行在专用硬件上,将证明确保去查找一些与Web服务的通信状态。连接错误时,会启用重试机制。
4 基于中间件的Web服务应用构架
在提出的通信架构中引入中间件,它像SOAP和瘦客户之间的网关,而瘦客户剥离了处理XML的重担。网关是移动客户的服务器,承担着移动客户请求响应的任务。通用的通信系统架构如图1所示,移动客户将必须使用二进制协议维持与网关的轻量级C/S通信。当然,任何比SOAP协议更轻量级的协议都可以使用(如REST),但众所周知二进制协议大致与SOAP协议功能相当。二进制协议简单,不如XML或SOAP标准,但它们能提供同样层次的扩展性和低通信脚本上的安全性。而且,从开发者支持的角度,成功的协议会为所有重要的编程语言和开发平台提供客户端口。
该架构的优点如下:
(1)移动客户必须维持轻量级通信,即较小带宽和较低处理能力要求。
(2)可以开发出高级的安全措施,因为网关中间件将代表移动客户工作。
(3)为防止任何通信错误(移动设备到网关或网关到Web服务),存储一些状态用于保证透明地与移动客户通信,网关保持全部的通信状态,当断线后的所有方重回线上时,继续重试通信连接。
(4)从实现架构的角度看,容易设计出软件工具,几乎自动地从WSDL文档开始,创建完全网关和移动客户部件;系统架构容易生成和测试,优于任何的现有实现。
唯一不足的是这种构架可能增加总的请求应答时间。系统或许赢得些时间,如果网关上执行的XML处理量巨大,但是这并不准确,因为两通信线路必须建立并维护,因此这早于任何实际实现的测量,该方向上没有明确的结论。
使用大量Web服务的Web应用实现是接下来应用领域里的工作。移动应用市场正寻找解决授权移动设备与Web服务集成的办法,并尽可能降低当前的性能问题。Web服务的研究者[5]证明并不存在实际的工作区,将尝试通过更快的XML解析器、全面协议优化和数据压缩等来消费Web服务,提高移动客户的性能。参考文献[3]、[5]的研究者证实了设计通信架构的努力,包括存在于外部设备的中间件部件,负责与Web服务通信时的XML处理。
下一步工作包括创建一个更加详细的原型,支持在主流移动平台上的Web应用现存的开发,主要是为实现新的Windows Phone 8平台而提出的架构。该平台确定容易创建Web服务的客户应用,相比之下,基于网关的体系架构的性能试验还不如它重要。在基于网关的构架实现中,主要将对Windows Phone客户程序的封装带宽进行测量,并与容易创建的.NET Framework下的SOAP Web服务客户程序的数据结果进行比较,两个方案的系统性能和可靠性也将进行测试和对比。
参考文献
[1] JSR 172: J2METM Web services specification[EB/OL].http://jcp.org/en/jsr/detail?id=172, 2012-01-20.
[2] wsdl2objc library homepage[EB/OL]. http://code.google.com/p/wsdl2objc/,2012-01-20.
[3] AIJAZ F, ZAHID S A, CHAUDHARY M, et al. Enabling high performance mobile Web services provisioning[C].Vehicular Technology Conference Fall(VTC 2009-Fall),2009:1-6.
[4] 刘振海,姜利群,殷兆麟,等.移动Web服务的研究与应用[J].计算机工程与设计,2009,30(11):2711-2713.
[5] ADA?觭AL M, BENER A B. Mobile Web services: a new agent-based framework[J]. Internet Computing, 2006,10(3):58-65.