APP下载

融合软件商店和Web聚合的SaaS软件开发模型*

2012-10-08殷月明吴永和

电信科学 2012年11期
关键词:租户开发者商店

冯 翔 ,殷月明 ,吴永和

(1.华东师范大学网络教育学院 上海 200062;2.上海数字化教育装备工程技术研究中心 上海 200062;3.上海贝尔股份有限公司 上海201206)

1 引言

当前的SaaS主要由服务商开发成套的软件,这些软件由低耦合、可组装的软件实体构成,因此可提供基于模板和规则的定制功能来满足多租户应用需求,其最大优势在于提供多租户服务,用规模效应来降低成本。多租户相关的技术是SaaS中的核心关键技术,如可配置的多租户SaaS应用、单实例支持多租户的SaaS应用架构、可伸缩的多租户SaaS应用架构等,这些技术从服务的角度保障多租户系统的弹性、扩展性和性能,确保SaaS软件交付模式的成功,但还不能解决需求交集小、多领域、多变的租户个性化需求问题,而这个问题需要从软件开发模型的角度来解决。从SaaS发展历史来看,其典型应用演化自CRM(customer relationship management)、ERP(enterprise resource planning)、MIS(management information system)、HRM(human resource management)等,面向的是中型以上具有明确上述系统需求的企业,它们的需求集合存在较大的交集,一旦需求集合交集过小,SaaS将难以适应。据埃森哲2009年11月发布的《中国云计算调研报告》数据,我国的中小企业数量超过千万。由于行业千差万别,数量巨大,这些中小企业的SaaS应用需求集合交集较小,传统SaaS软件交付模式难以满足这样的需求。

近几年发展起来的软件商店模式,可满足大量人群的个性化需求,而Web Mashup为快速情境应用[1,2]提供技术和模式支撑。在SaaS上整合软件商店模式有利于提高应用丰富度,从而满足个性化需求,基于此,本文基于Web2.0、Web聚合、网构软件思想,设计一种融合SaaS和软件商店的新型SaaS软件开发架构,该架构源自电信2.0领域的研究,其目的是以轻量级方式整合电信和IT能力,从而为中小企业提供灵活、敏捷的信息化平台支撑。

2 相关研究

Web的第一阶段是基于超链接的静态信息存储网络,随着Web的发展,应用越来越多,各种结构之间的交互需求也越来越迫切;第二阶段的Web2.0随之也发展起来了,并由此催生了新一代的Web软件开发技术和模式,一些公司和机构都已相继展开研究[3,4]。

互联网作为平台是Web2.0中的核心原则之一[5]。随着Web的平台化,IT界的商业模式也在发生改变,新型应用模式诞生了,如聚合(mashup)对软件行业产生了深远影响,相对于传统 I T应用有众多优点[6],因此越来越多的企业和学者对此展开研究,各种面向用户的聚合系统[7]开始出现 , 如 Y ahoo Pipe[8]、Intel Mash Maker[9]、SAP 的Enterprise2.0聚合平台[10]、IBM 情境应用平台[6]等。

Web聚合有两种形式:一种是对于不同来源的数据和服务进行聚合,另一种是作为完整Web应用的包含UI、逻辑在内的一整套网页功能被聚合,这种聚合下的典型代表是Widget/Gadget等。然而,Widget/Gadget仅表现简单逻辑功能,现阶段多数Widget平台只负责将不同来源的Widget组织在一起展示,而没有深度地将其进行业务聚合。开放聚合联盟 (open mashup alliance,OMA)制定的EMML(enterprise mashup markup language)聚焦在后台的数据聚合逻辑流程上[11]。

IBM的 Mashup Center[6]是基于聚合思想的企业级情景应用支撑系统,是Mashup应用企业的成功案例。Mashup Center不支持将互联网上的普通网页聚合到应用中,任何现有网页和Web应用必须以IBM提供的Widget规范方式重新包装之后打包为jar格式或war等格式发布,或通过聚合 H ub发布。

总之,将聚合应用于企业成为趋势,但应用的深度和广度还不够,对于具有较强逻辑性的企业应用方面还需要深入研究:不依赖于特定厂商Widget/Gadget规范的Web应用聚合技术;在Web前端的业务逻辑构造;任意来源的Web应用组装。网构软件理论与技术在Web上的应用为解决这些问题提供了支撑。网构软件是指在面向对象、软件构件等技术支持下的软件实体以主体化的软件服务形式存在于Internet的各个节点上,各个软件实体相互间通过协同机制进行跨网络的互连、互通、协作和联盟,从而形成一种与WWW 相类似的软件Web(software Web)形态[12]。参考文献[13]指出网构软件可适应开放、动态、难控的网络环境需求,它呈现出一种可演化、连续反应式、多目标适应的新系统形态。网构软件系统强调的是以网络为“土壤”,以可复用构件为“营养”来实现丰富多彩的新型应用程序,这是个性化软件的重要基础。

软件商店模式充分体现了“长尾”效应,为软件满足个性化需求提供了较好的模式。虽然软件商店取得了成功,但是商店应用的同质化逐渐暴露。这种问题在长尾坐标图上反映为:横轴过度,纵轴过低。即长尾在横轴上非常之长,而对应的纵坐标指标,如单个软件关注度、下载量、付费量则极度偏低。从短期看,这样的态势对运营商非常有利,而对多数开发者极其不利。从长远看,对运营商也将逐渐变得不利,因为大量处于“长尾”上的开发者将不再愿意投入过多。

3 设计思想与方法

本文提出将软件商店模式、SaaS和Web聚合模式进行整合,使得SaaS可向第三方软件提供商开放,并具有可聚合任意开发商所接入的Web应用功能。这种模式的核心在于:让软件商店的开发者之间也开展软件的共享和聚合,这种共享与聚合可以采用免费共享方式也可以采用付费方式。其宗旨就是,降低单体应用同质化,提高单体应用流通量,从而在提高平台应用丰度的同时也关注了质量和收益。而要采用这样的模式,则需要构建一种满足软件商店中软件聚合需求的平台。这里讲的聚合着力点在于Web应用软件的聚合,不是简单的Widget/Gadget或者数据聚合,这些软件可独立运行,也可被组装起来完成更大的需求目标,它不同于传统意义上的组件复用。将这种软件聚合的模式称为Executable Web软件模式。

为了将Web上的各种应用从更高层次进行聚合,就需要一种关于Web应用的发布、发现和集成机制。图 1所示为 Web2.0及之前的示意,图 2为Executable Web的示意,这两个图显示了这两种机制的不同[14]。Executable Web最初是Boothby[14]提到的一种想法,本文的思想与其相似,且字面含义明确,故沿用Executable Web这一概念,并借助软件商店、SaaS等进行了拓展和完善,以此为核心设计服务于电信行业、中小企业以及开发者的SaaS生态环境。

Executable Web类似于W3C中的Web服务的架构[15],不同的是,这种架构最终返回给调用程序或者用户的是一个可直接使用的、具有UI交互能力的、完整意义上的应用程序,而不是需要继续加工的面向机器的服务。就其本质来看,传统 Web服务是 M2M(machine to machine),而这种服务既可以是M2M也可以是M2P(machine to person)。

图3所示的Executable Web Ecosystem描述了基于Executable Web的SaaS生态环境。其主要组成为服务提供商、集成商、网页提供商以及Executable Web支撑运营商(即SaaS运营商)。

服务提供商提供各种各样的服务,包括SOAP Web服务、RESTful服务、RPC服务以及以脚本语言 (如 Google map JavaScript API)提供的Open API等。这些服务可以是免费的,也可以是收费的。

网页提供商编写各种各样的Widget/Gadget,甚至较之更复杂的完备意义上的网页,并将这些网页提交到Executable Web支撑运营商。在提交网页时,根据需要和特性,公布该网页的目的、传值方式、URL等。支撑运营商根据提交时的参数进行后台索引、发布、管理。

集成商可在服务提供商、网页提供商的服务及网页基础上编写更多、更复杂的服务、网页甚至大型应用。

支撑运营商负责管理底层服务,网页服务的注册、发布、管理,还负责提供用户管理、平台管理、开发者管理、计费管理、应用管理等功能支撑。

依据上述方法,设计了BellMashup Platform系统架构。

4 BellMash Platform系统架构

BellMash Platform系统架构如图4所示,其主要部分功能如下。

BellMash Widget/Webpage、构件 Workbench作为软件开发的SDE提供给开发者以提高开发速度、效率及支持软件质量保证;Workbench可基于Eclipse开发,其中配置Web页面开发向导,开发模板。

BellMash运营管理负责对开发者、构件、应用、运行平台等进行管理。

BellMash Web服务器用于暴露各种服务,包括Web服务、RESTful服务等。

BellMash构件服务器是符合SCA规范的构建服务器,可采用Apache Tuscany搭建。SCA规范能够采用依赖注入的技术将任意的服务进行组装集成,比如可以将传统的POJO形式的Java类进行封装,可以将Web服务进行封装,可以将RESTful服务进行封装,可以将上述各类服务进行组装。

5 客户端聚合引擎

在BellMash平台中,实现基于Web聚合、用户驱动、网构软件理念的关键除了后台服务构件之外,还在于浏览器端的聚合框架。这种框架应该能够自动发现、加载服务型的Web页面,能够聚合Web页面形成更大的应用,还需要具备网构软件所强调的动态性、开放性、演化性等。

在聚合框架中,开发者和用户都可以通过非常简单的语句聚合新的Web应用。新的应用是位置透明的,由框架自动搜寻、加载和呈现。框架还可负责在同类Web应用中加载使用体验更好、可信度更高、响应更快的应用;框架还可在无法寻址用户既定Web应用的情况下搜寻并加载替代应用。

要将Web应用共享起来,必须有一个机制,该机制能够在Web上标示这个Web应用,这包括Intent Based软件共享方法和聚合引擎。

5.1 Intent Based软件共享方法

赋予Web应用特定的功能描述,这种描述类似Android application Framework中的Intent机制[16]。每个Web应用的公开页面将向Web暴露二元组。将这样的二元组通过数据库进行注册登记,当其他应用需要调用该功能时,网页代码中只需要通过简单的数条Java Script语句调用。对于开发者来讲,在面对一个具体需求时,其首先在粗粒度层次进行需求分析,并向服务器端的application目录进行Intent关键字模糊查询。如果能够查询到类似的Web应用服务,则可复用之,如果不能搜索到,则自主开发,并可提交到服务器端的application目录,以被他人复用。一个典型的例子是:开发者A开发了一个联系人应用,开发者B开发了一个发短消息的应用,A现在需要扩展联系人应用,以使其能够在用户点击联系人的手机号码时启动一个发送短消息的应用。由于A没有开发短消息的能力和经验,A在系统中检索类似Intent:Intent_SMS形式的Web应用声明。当获得这样的应用之后,在其代码(客户端代码)中的clickEvent中调用类似如下代码 Intent(Intent_SMS,arg_msg)即可调出Web上无论在哪里的由B开发的发送短消息的应用。arg_msg包含目的移动电话号码以及可选的消息,该参数有开发者B定义。arg_msg通常以JSON/XML格式编码,默认的开发者B的应用接受JSON格式传送的arg_msg。

5.2 聚合引擎

在聚合框架中,开发者在一定的规则下开发Web应用,这些Web应用中的网页在传统Web网页基础上嵌入了一种基于HTML5标准提出的新事件机制——PostMessage[17]。通过该机制绕开浏览器同源策略(same origin policy,SOP)限制,该Web页面可以同其他不同来源的页面在同一网页进行通信,从而达到聚合的目的。

图5和图6显示了整体聚合机制以及聚合引擎所在的位置。一个开发者通过BellMash平台搜索已注册的Web应用数据,搜索到applicationService1和applicationService2满足其需求。开发者通过Intent机制,将二者结合起来。需要强调的是,在这个过程中,开发者并不是将这两个应用的代码融合到一个Web页面中,开发者仅仅使用Intent声明了要使用那个applicationService,在随后的聚合过程中,聚合引擎将可以把不同来源的应用聚合在用户界面中。

开发者将applicationService1和applicationService2在开发阶段聚合成新的应用application1;开发者也可以直接用applicationService2开发新的应用application2,随后他将把application1和application2发布到服务器上,并且可将其注册到BellMash的application目录上以供其他开发者共享使用。

图6表示的是在用户使用阶段,聚合引擎的工作机制。一个认证用户可以从application目录中挑选满足需求的应用,这些应用条目将被自动记录到用户的application目录中,并且在适当的时候保持同浏览器端用户离线application目录的同步。依然以contact和sendsms为例,把contact作 为 applicationService1, 把 sendsms作 为applicationService2。当用户启动application服务1时,启动过程从离线数据库获取了applicationService1的URL,随即聚合引擎依据该URL从第三方服务器上调出contact应用页面。此时聚合引擎没有进行任何关于sendsms机applicationService2的操作。当用户点击contact中的Mobile电话号码时,该过程通过代码Intent(Intent_SMS,arg_msg)在Intent analyzer协助下对sendsms及applicationService2进行定位、加载、赋值等一系列操作,最终显示给用户一个新的界面,该界面即为发送短信的界面,并且其上依据自动填充arg_msg的相关数据,此外,用户还可以根据需要修改该数据,最后将短信发送出去。

6 原型系统

根据上述架构,研究团队开发了一个可以实际运行的原型系统。该系统主要实现聚合引擎部分,并整合电信行业的Parlay X能力,将其封装为Restful API,提供通信支持。BellMash原型平台的用户界面参考开源Web desktop[18]。开始菜单中显示所有的应用,包括用户从application目录中选择的,也包括系统级默认功能,如application目录、应用注册模块以及同步服务器等。

6.1 个性化企业应用实例

为了测试Web 上任何位置的应用之间的聚合运行,研究团队在不同的域上分别开发了联系人应用、基于电信位置服务的定位应用、发送短消息应用、第三方呼叫应用。这些应用都是相互独立的应用,都可以独立使用,但是在某些情况下,可以将应用聚合起来满足特定需求场景,比如物流跟踪。

场景如下:假如原始的联系人应用中显示的是所有配送员的个人信息,包括手机号码信息。现在物流公司希望随时了解配送员的当前位置,他们也希望其客户能够随时了解配送员的当前位置,以提高服务满意度。同时,物流公司后台管理员还希望随时快速地通过短信或者拨打电话联系配送员。物流公司希望开发上述功能的Web应用,开发周期要求在两周之内。

面对这样的场景,开发者首先在BellMash中搜索Intent满足sendsms、location、call等关键字的应用。开发者搜索到了相关的应用,并且也获得了调用规范,即上文所述的Intent二元组,开发者只需要调用Intent(Intent_SMS,arg_msg)这样的代码即可。在这样的情况下,开发者对原有联系人应用进行了适当修改,在contact中每个配送员条目下添加了:发送短信的图标及对应的功能;根据手机定位的图标及功能;第三方呼叫的图标及功能。至此,该聚合应用完成。经过测试,满足了物流公司的需求。开发时间:3天。

6.2 Bellmash Platform上的应用开发流程

典型的开发流程包括开发者搜索Intent的过程,开发者定制应用以及开发者发布自己的应用的过称,图 7所示为开发流程。

7 下一步研究

本文所设计的BellMash Platform原型平台的主体是聚合引擎以及后台电信能力服务,融合SaaS和软件商店实践Executable Web理念。BellMash是平台原型,它支持在其上进行不断的演化、扩展。因此,从理论上来看,在这样的平台上所演化的具体应用是因需求而变的,应用没有数目限制,应用的类型也没有预期性,而这样的特征能够为应用的个性化提供支撑。原型系统设计以及典型案例测试表明本方案为SaaS提供了一种满足多领域、需求集合交集较小的中小企业个性化、频繁变化的应用需求的可行技术路线。

为了提供安全可靠的SaaS服务,还有关键问题需要进一步研究,这些问题包括:由于应用不再由SaaS运营商独立提供,因而应用的可靠性、安全性技术将有别于传统SaaS模式;由于应用聚合可能在不同的应用提供商之间发生,数据的安全性也将有别于传统SaaS技术。这些问题是构建新型SaaS生态环境的必要保障。下一步研究将重点集中在以下两方面。

(1)数据的保护机制

通过构建应用安全沙箱,使得SaaS应用软件的运行限制在安全框架之内,对于大多数应用,数据只在浏览器本地驻留,不允许不同提供商的应用将数据通过网络发送到其他域;对于必须同服务器进行交互的数据,通过制定技术和机制两个层面的安全协议,确保数据被限定在特定的域中。

(2)应用的多实例机制

对于任意应用,采用类似云存储中数据备份机制确保应用高可靠性。应用提供商可以提供任意套实例,但必须在SaaS运营商域部署至少一套实例,从而保证用户总是能访问应用。对于同类型应用,SaaS运营商将首先查找用户配置的应用的实例,如果所有实例不可访问,则查找其他等价应用实例以提供应急服务。

1 Maximil ien E M,Ajith Ranabahu,Stefan Tai.Swashup:situational web applications mashups.Companion to the 22nd ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications Companion,ACM,2007

2 Mehmet Altinel,Brown.Damia:a data mashup fabric for intranet applications.Proceedings of the 33rd International Conference on Very Large Data Bases,VLDB Endowment,2007

3 Katsuhisa Maruyama,Makoto Matsushita,Shinichiro Yamamoto.Japanese workshop on leveraging web2.0 technologies in software development environments (WebSDE).Proceedings of the 21st IEEE International Conference on Automated Software Engineering(ASE'06),Tokyo,Japan,2006

4 QEDWiki.Ibm.http://services.alphaworks.ibm.com/qedwiki/

5 Tim O'reilly.What is Web 2.0:design patterns and business models for the next generation of software.Communications&Strategies,2007,1(17)

6 IBM Mashup Center初探:第一部分.http://www.ibm.com/develo perworks/cn/data/library/techarticles/dm-0808wumd/index.html

7 Hoyer V,Fischer M.Market overview of enterprise mashup tools.Proceedings of the 6th International Conference on Service-Oriented Computing,Springer-Verlag,2008

8 Yahoo.Pipes:rewire the web.http://pipes.yahoo.com/pipes/

9 Intel.Intel Mash Maker.http://mashmaker.intel.com/web/

10 Rama Gurram M.A web based mashup platform for enterprise 2.0 web information systems engineering-WISE 2008 Workshops.http://dx.doi.org/10.1007/978-3-540-85200-1_17

11 Open Mashup Alliance.The open mashup alliance for enterprise mashups.http://www.openmashup.org/

12 杨芙清,吕建,梅宏.网构软件技术体系:一种以体系结构为中心的途径.中国科学E辑:信息科学,2008,38(6):818~828

13 杨芙清,梅宏.网构软件:未来的新型软件形态.中国教育网络,2005(7)

14 Rod Boothby.The executable web.http://innovationcreators.com/wp/p=300

15 W3c.Web services Architecture.http://www.w3.org/TR/ws-arch/

16 Speckmann Benjamin.The Android mobile platform.http://www.w3.org/TR/html5/comms.html

17 Ext Js Inc.ExtTop-Desktop Sample App.http://www.extjs.com/deploy/dev/examples/desktop/desktop.html

猜你喜欢

租户开发者商店
“剧场”商店
基于多租户隔离的云安全建设
天边的白云商店
逛玩具商店
无名火
“85后”高学历男性成为APP开发新生主力军
基于MVC模式的多租户portlet应用研究*
16%游戏开发者看好VR
栝楼产业开发者谢献忠
企业多租户云存储平台的设计与实现