关于开放性SaaS平台的研究
1.引言
SaaS(SoftwareasaService)软件的出现是互联网发展到一定阶段的必然产物,网络覆盖的广泛性,网络带宽的不断提升,互联网一系列量变因素积累到一定程度就产生了质变,SaaS也因此而诞生。从SaaS商业模式来看,SaaS软件盈利的关键是服务的低成本和用户数量之间的平衡,低成本是SaaS软件的最大优势,但光低成本并不能发挥SaaS的最大效益。
拥有大量客户群的SaaS软件商纷纷打造自己的SaaS运营平台,把自己掌握的客户资源开放给第三方软件厂商,丰富SaaS平台服务的全面性,最大程度的发挥长尾理论效应[4]。
现有的SaaS平台仅提供一个服务信息发布的平台,并没有真正意义的将服务集成到平台,服务的应用仍就是SaaS软件的使用,并非是平台级的应用。因此,本文从Web服务统一集成调用的两个关键——WSDL、SOAP的生成以及服务配置信息数据模型探讨平台服务集成能力的提升。
2.平台的基本结构
SaaS平台作为纽带联系着服务提供和消费的两端,从服务消费用户来看,平台应提供一个查找、应用服务的机制,一系列有效、可靠、实用的服务描述信息(包括服务的功能、消费条件、服务质量等)作为服务消费的依据。从服务提供者来看,平台应提供注册、管理服务的机制、服务安全保障机制以及服务收费机制。总之,从最后表现形式看,平台架构三层B/S体系结构:表现层、中间层、持久层,以服务为中心的统一描述、发现、调用、集成机制(UniversalDescription,CallandIntegration)UDCI。
UDCI表现层统一管理同平台同用户之间的交互,包括:服务提供用户的服务注册发布以及服务管理、服务消费用户的服务查找以及服务定购、用户同平台交互的访问权限控制。
UDCI中间层完成服务的动态的调用,动态解析服务应用请求以及服务应用响应。为了尽可能减少数据在网络中的传输,提高服务应用响应速度,采用MapReduce分布式计算模型,同时建立SOAP处理器和WSDL动态解析器以保证服务集成时的通用性。
UDCI持久层是服务信息数据中心,包括服务配置、付费机制信息、服务质量信息、服务WSDL文件、服务本地集成文件等。传统的编程模式和数据结构要么无法满足高可配置性和通用性要求,要么导致数据大量在网络间传输,影响服务应用响应速度,因此,这里采用开源的HDFS分布式文件系统和基于列分布式数据库HBase。
3.SaaS平台UDCI架构及实现
3.1用户交互层
根据用户类型的不同把该层分为两部分:最终用户交互中心和服务提供用户交互中心。
最终用户交互中心处理服务的查询添加、服务应用访问认证及服务应用相应界面的动态生成,任何服务的应用首先通过查询添加取得服务,然后通过访问认证的验证,取得授权,方可进行下一步的应用,取得授权后生成相应界面对所选服务动态应用。服务提供用户交互中心处理服务提供商服务注册发布、服务配置及服务必要文件的上传。
3.2服务动态解析层
服务应用[1]最终体现的形式为SOAP消息的交换,这就SOAP消息生成及解析形式具有很好的灵活性和通用性,为此服务中介规划为两大部分:WSDL动态解析器、SOAP消息生成解析器。任何服务应用访问都必须得到平台的访问认证,通过WSDL动态解析器解析WSDL来解析和生成服务应用的SOAP消息,使SOAP消息具有更强的可通用性、可移植性。
WSDL动态解析的困难[2]在于自动解析和提取WSDL文档中的types元素所包含的作为SOAP程序输入和输出参数的原子的数据类型,本文利用DOM(DOM-DocumentObjectModel)使用递归的方法在内存中构建元素树进行输出和输入元素的自动提取工作。之所以(本文转载自
www.yzbxz.com 一枝笔写作网)选择DOM,是因为DOM采用树模型解析XML文档,能够很好地表现types元素所定义的数据类型的递归特征。DOM解析器可以遍历文档树并访问所需要的数据元素。DOM解析器读入整个WSDL文档,构建一个驻留内存的树结构,然后使用DOM接口来操作这个树结构。具体解析算法[6]:①确定是否是element元素;②判断此元素是原子类型的元素还是复杂类型的元素;③如果属于复杂类型的元素,则判断此元素是简单类型的扩展还是复杂类型的扩展;④按照简单或复杂类型的数据元素进行相应处理;⑤如果处理到的元素不是原子类型,则进行递归解析,最终得到SOAP消息生成和解析所需要参数的定义信息。
SOAP消息生成解析器负责所有的SOAP信息的生成以及解析。SOAP消息生成器根据WSDL传递的用户请求信息,组织生成集成服务的SOAP请求消息,并负责发起对远程的SOAP请求。在SOAP消息生成过程中,①确定是否需要附加附件,需要附加附件,取得请求中对应类型的附件消息,生成SOAPPart并附加;②生成SOAPEnvelope,处理SOAP消息文件头,添加数字签名等服务提供商要求处理的文件头信息;③处理SOAP消息Body,根据WSDL解析结果,对应生成Body元素。
请求发送成功后,SOAP解析器[5]接收远程服务返回的响应信息,并根据WSDL解析器的解析结果动态组织成页面形式,反馈给服务消费用户。在SOAP消息解析过程,①判断是SOAP错误消息,如果是,则直接解析错误消息生成服务应用错误页面返回。②判断返回消息是否包含附件,如包含附件,提取附件以备页面生成之用;③解析SOAP消息Header,取得数字签名、是否有下一步请求等;④获取服务提供商页面配置信息,根据页面配置信息解析SOAP消息Body,并将解析结果返回给最终用户服务处理中心。
3.3服务信息数据中心(SIMC)
服务信息数据中心[3]存储信息包括服务配置信息、界面定制信息、服务质量评估信息等,考虑到平台集成任何服务都有其唯一性及独特,这里采用弱一致性的数据库系统HBase,其数据模型如图:
元数据表tbMetaData存放在元数据服务器,记录着服务配置信息的位置信息。服务界面信息表tbServicePage、服务配置信息tbServiceInfo、服务质量信息tbServiceQuality分布在不同的分布式服务上的弱一致性的分布式数据库,基于列”content”存储在不同的分布式服务器上,列”content”可根据需要而存储不同的类型的信息,在tbServicePage存储的为页面html代码,在tbServiceInfo和tbServiceQuality根据type的不同存储字符串值或xml文件。
4.平台集成服务应用实例——平台集成五金产品外观检索系统示例(责任编辑:一枝笔写作事务所)