专利名称::用于部署saas(软件即服务)服务包的方法和系统的利记博彩app用于部署SAAS(软件即服务)服务包的方法和系统
背景技术:
:计算和移动装置越来越普及导致对软件或计算机应用巨大的需求。数据传输技术的改善也大大推动了这个事情。随着对有用计算机应用和产品的需求的不断增长,软件供应商一直在推出新的方式向最终用户提供产品。SaaS或“软件即服务”是一种这样的模型。SaaS提供了一种向消费者提供软件产品的机制,以及对将计算机应用作为打包产品提供的更传统模型提出了挑战。可以将SaaS定义为软件提供模型,由此由服务提供商主控计算机应用并通过诸如互联网的网络提供给最终用户。SaaS提供了一种向客户提供软件的新样式。它利用面向服务的架构(SOA)实现计算机应用的按需提供。考虑到采用起来容易和快速并降低了成本,它在从单个用户到大型公司的客户间迅速获得接受。经分析,与在单组或多组计算机系统上安装计算机应用的传统模式相比,基于SaaS模型的软件消耗显著节省了用户成本。不过,采用SaaS给涉及的参与方提出了几个挑战,尤其是对于独立的软件供应商(ISV)和SaaS平台提供商。为了更好地理解该方案,现在将参考附图纯粹以举例的方式描述实施例,附图中图1示出了根据实施例的用于部署SaaS服务包(servicebundle)的系统的方框图。图2示出了根据实施例的部署SaaS服务包的计算机实施方法的流程图。图3示出了可用于根据实施例的图1系统中的客户端或服务器计算机系统的方框图。具体实施例方式SaaS为软件供应商和消费者提供了独特的宝贵提案。对于软件供应商,益处可以通过更短的产品生命周期开发和对产品进行频繁升级的能力的形式出现,使得他们更容易向市场提供新应用或服务。从最终用户的角度来看,SaaS可以显著降低使用计算机产品的成本,节省了客户拥有产品的成本,以及他们仅为使用付款。SaaS为供应商和消费者二者提供了双赢局面。不过,如前所述,采用SaaS可能给涉及的参与者带来几个挑战,尤其是对于独立软件供应商(ISV)和SaaS平台提供商。例如,平台提供商建造、分发和更新平台常常是有挑战性的。对于服务提供商,构建、分发和维护服务也是有挑战性的,因为服务可能要随着时间经历开发、构建、部署和更新的规则周期。提出了一种由服务提供商管理服务分发的方案。该方案使得分发过程自动化并确保服务环境的完整性。因此,本方案的实施例提供了一种利用消息收发基础设施部署SaaS服务包的方法、系统和计算机可执行代码。为了清晰和方便起见,在这里使用以下定义术语“SaaS平台”是指充当运行软件或计算机应用的基础的软件和/或硬件架构的组合。它典型地可以包括计算机的架构、操作系统、编程和用户接口等。术语“SaaS服务”是指基于SaaS模型或平台提供计算机应用或产品。术语“服务包”是指以包(或部件)形式提供(给用户)的计算机应用。例如,在OSGi(开放服务网关协议)环境中,服务包由提供特定功能的一组JAVA包构成。服务包可以提供服务或一组服务。图1示出了根据实施例的用于部署SaaS服务包的系统100的方框图。在实施例中,可以在OSGi(开放服务网关协议)环境中分发SaaS服务(服务包)。开放服务网关协议是一种开放标准组织,旨在提供标准的框架,以用于提供服务提供商和软件开发商之间的互操作性。它使用JAVA程序设计语言的平台独立特征来提供独立于平台的应用的开发。在端到端的客户端-服务器架构中,服务器向客户端以“包”的形式提供应用,所述包是标准JAVA归档(JAR)文件中的可自我安装的应用包。JAR文件将很多文件聚集到一个文件中,以及典型地用于以类和关联元数据和资源(文本、图像等)的形式分发Java应用或库,因此使得包能够提供成套服务。参考图1,该系统包括客户端-服务器架构中的多个服务器计算机110、120、130、132、134、136、140和多个客户端计算机系统150、152、154、156。服务器计算机可以是设计成向客户端提供服务的硬件或软件的任意组合。此外,每个服务器计算机可以是web服务器(向多个客户端计算机系统提供web应用)或主控定制应用的专用服务器。每个客户端计算机系统可以是台式计算机系统、膝上型计算机、移动装置等。此外,该多个服务器计算机110、120、130、132、134、136、140和客户端计算机系统150、152、154、156通过网络连接在一起,所述网络例如是内联网和互联网,其可以是有线的或无线的。在实施例中,该多个服务器计算机110、120、130、132、134、136、140可以包括以下服务器构建服务器110、储存库服务器120、多个生产服务器130、132、134、136和消息总线服务器140。构建服务器110是在其中编译一个或多个SaaS服务(计算机应用)的源代码并将其捆绑成服务包JAR的计算机服务器。典型地,构建过程涉及到获取源代码和其他配置数据作为输入,并产生期望的对象作为输出。输出(zip文件、图像、文本等)取决于输入参数。将与构建服务器相关的规范(包括构建服务器的每个改变)形成文档。这通常包括操作系统(OS)版本、服务包层级和安装的补丁,使得更容易再现构建服务器。在实施例中,构建服务器110编译一个或多个SaaS服务(计算机应用)的源代码并将它们捆绑成服务包JAR。它还通过安全通道将服务包拷贝到仅可以由储存库服务器120访问的位置。一旦已经产生服务包并将其拷贝到仅可由储存库服务器120访问的位置,构建服务器110向消息总线服务器140上发布主题(用于公布可以提供给多个预订者的消息的机制)。储存库服务器120是通过安全连接从构建服务器拷贝所有服务包并存储它们的计算机服务器。储存库服务器典型地可以由核心和增加额外功能的一些非必要部件构成。它可以被各种客户端应用(例如web应用)访问并能够通过远程协议为请求提供服务。可以使用储存库服务器存储服务包,供稍后下载。它充当着所有包到生产服务器的分发通道。使得储存库服务器上的所有服务包都能够通过任何web协议(例如但不限于http(超文本传输协议))而被生产服务器访问。储存库服务器120也向消息总线服务器140预订构建服务器110发布的主题。还将其配置成一旦它从构建服务器110下载了一个或多个服务包就(向消息总线服务器140)发布主题。生产服务器130、132、134、136向具有计算机系统150、152、154、156的最终用户或客户提供服务。服务容器运行于计算机系统150、152、154、156上。生产服务器130、132、134、136向消息总线服务器140预订储存库服务器120发布的主题。消息总线服务器140是用作所有服务器110、120、130、132、134、136、140之间的通信通道的消息服务器。图2示出了根据实施例的部署SaaS服务包的计算机实施方法的流程图。在步骤210中,第一计算机服务器编译至少一个计算机应用(可用于部署)的源代码并产生至少一个服务包。然后它将第一消息发布到第二计算机服务器上。该消息包含至少一个服务包的第一安全文件系统位置。在实施例中,第一计算机服务器是构建服务器,以及第二计算机服务器是消息总线服务器。在实施例中,可以将第一和第二服务器的功能组合到单个服务器中,即第一服务器也可以充当第二服务器。在实施例中,至少一个计算机应用可以是web应用(通过诸如互联网或内联网的网络访问的应用)。在步骤220中,一旦该消息在第二计算机服务器上可用,就通知第三计算机服务器关于新构建包的位置。在实施例中,第三计算机服务器是储存库服务器。而且,仅可以由第三服务器访问至少一个服务包的第一位置。在步骤230中,第三计算机服务器使用安全网络连接从第一计算机服务器获得至少一个服务包。然后它在第二位置制作该至少一个服务包的安全副本,第二位置可以由其他服务器通过任何web协议(例如但不限于http(超文本传输协议))访问。在步骤240中,一旦已经制作了至少一个服务包的安全副本,第三服务器就向第二服务器发布第二消息,该第二消息提供至少一个服务包的位置,例如通往其第二位置的URL。在步骤250中,第四服务器(或多个服务器)接收消息形式的通知,其包含通往至少一个服务包的第二位置的URL(统一资源定位符)。在实施例中,第四服务器(或多个服务器)是(一个或多个)储存库服务器。在步骤260中,基于第二消息中包含的第二位置部署至少一个服务包。在部署之前,产生基于通往第二位置的URL的配置文件。需要配置文件来开始由一个或多个服务包提供的服务。如果迄今为止未部署服务,则加载与服务相关联的服务包并部署服务。如果服务已经部署,则利用新服务包更新服务。可以不必按照上文所述的顺序执行上述方法步骤。也可以按照任何其他顺序执行这些步骤,其中(一个或多个)步骤在其他方法步骤之前或之后执行。说明根据实施例的利用消息收发基础设施部署SaaS服务包的示例。为了展示利用消息收发基础设施对SaaS服务包进行示范性部署,将三台具有2GBRAM和2.8GhzPentium处理器的XW8200机器用作原型。第一服务器充当构建服务器,其主控OSGi(开放服务网关协议)包(服务包)的源。将ApacheAnt1.6.1用于构建过程,以及将FTP服务器FileZillaV2.2.7用于与第二服务器-储存库服务器共享可分发的JAR。在本示例中,构建服务器还充当JMS(Java消息服务器)服务器(或消息总线服务器)。在第一服务器上安装JBoss4.2.4JMS服务器以便于不同服务器之间通信。在JMS服务器上创建队列“DistributableJarQ”以发布通知生成JAR的消息。在JMS服务器上生成名称为“D印loyableBundleTopic”的主题,以发布服务包何时可用于部署的消息。在第二服务器(储存库服务器)上安装ApacheTomcat6.O.13以通过HTTP向生产服务器暴露可分发的JAR。在第二服务器上安装JMS代理以收听“DistributableJarQ”。然后它通过ftp连接从构建服务器向apachetomcat目录上拷贝JAR。最后,·它向JMS服务器上的“DeployableBundleTopic”发布消息。第三服务器充当生产服务器。EclipseEquinox4.O安装在生产服务器上。主控服务的是OSGi容器。JMS代理安装在生产服务器上,其被配置成收听“DeployableBundleTopic”。一旦JMS代理接收到关于“DeployableBundleTopic”的消息,它就基于指定位置产生OSGi配置文件。它还检查包的任何缓存版本并对其进行清空。如果OSGi容器不在工作中,它启动OSGi容器。OSGi容器然后从配置文件读取并加载包。如果OSGi容器已经在工作中,JMS代理针对储存库服务器上新近可用的包运行更新。图3示出了可用于根据实施例的图1系统中的计算机系统的方框图。系统300可以是任何种类的计算装置,例如,但不限于个人计算机、台式计算机、服务器计算机、膝上型计算机、笔记本计算机、网络计算机、个人数字助理(PDA)、移动装置、手持装置或任何其他适当的计算装置。此外,系统300可以是独立系统或通过有线或无线手段连接到其他计算装置的网络系统。系统300可以包括用于执行软件指令的处理器310、存储器320、输入装置340和输出装置350。这些部件可以通过系统总线360耦合在一起。布置处理器310以编译计算机应用来产生至少一个服务包,发布包含该至少一个服务包的第一位置的第一消息,在第二位置制作该至少一个服务包的安全副本,发布包含该至少一个服务包的第二位置的第二消息,并基于第二消息中包含的第二位置部署该至少一个服务包。存储器320可以包括计算机系统存储器,例如,但不限于SDRAM(同步DRAM)、DDR(双倍数据率SDRAM)、RambusDRAM(RDRAM)、RambusRAM等,或存储存储器介质,例如软盘、硬盘、CD-ROM、DVD、笔式驱动器等。输入装置340可以包括鼠标、键盘、触摸板或触摸屏、语音识别器等。输出装置350可以包括虚拟显示单元(VDU)、打印机、扫描仪等。要认识到,图3中所示的系统部件仅仅出于例示的目的,以及实际部件可能根据为实施本方案而部署的计算系统和架构而变化。上文描述的各种部件可以被主控在单个计算系统或通过适当手段连接在一起的多个计算机系统(包括服务器)上。描述的实施例为服务提供商提供了一种有效机制来分发和部署SaaS服务。提出的方案使部署过程自动化,从而提高了生产率。它帮助服务提供商以最小的人工干预更快到达客户。要认识到,可以将本方案范围之内的实施例实现为计算机程序产品的形式,计算机程序产品包括计算机可执行指令,例如程序代码,其可以运行于结合适当操作系统的任何适当计算环境上,所述操作系统例如是MicrosoftWindows、Linux或UNIX操作系统。本方案范围之内的实施例还可以包括程序产品,所述程序产品包括计算机可读介质,用于承载或具有其上存储的计算机可执行指令或数据结构。这样的计算机可读介质可以是任何可通过一般或专用计算机访问的可用介质。例如,这样的计算机可读介质可以包括RAM、ROM、EPROM、EEPR0M、⑶-ROM、磁盘存储器或其他存储装置,或可用于以计算机可执行指令形式承载或存储期望的程序代码并可以由一般或专用计算机访问的任何其他介质。应当指出,上述本方案的实施例仅仅是出于例示的目的。尽管已经结合其具体实施例描述了本方案,本领域的技术人员将认识到,很多修改都是可能的,而在实质上不脱离这里所述主题的教导和优点。可以做出其他替代、修改和变化而不脱离本方案的精神。权利要求1.一种部署SaaS(软件即服务)服务包的计算机实施的方法,包括编译计算机应用以产生至少一个服务包;发布第一消息,其包含所述至少一个服务包的第一位置;在第二位置制作该至少一个服务包的安全副本;发布第二消息,其包含所述至少一个服务包的第二位置;以及基于所述第二消息中包含的第二位置来部署该至少一个服务包。2.根据权利要求1所述的方法,其中在OSGi(开放服务网关协议)环境中部署所述服务包。3.根据权利要求1所述的方法,其中所述至少一个服务包是JAR文件。4.根据权利要求1所述的方法,其中所述计算机应用是web应用。5.根据权利要求1所述的方法,在所述部署步骤之前还包括基于所述至少一个服务包的第二位置产生配置文件,其中使用所述配置文件部署该至少一个服务包。6.根据权利要求1所述的方法,其中可以通过安全连接访问所述至少一个服务包的第一位置。7.根据权利要求1所述的方法,其中所述至少一个服务包的第二位置是webURL(统一资源定位符)。8.一种用于部署SaaS(软件即服务)服务包的系统,包括通过网络连接的多个服务器,其中所述多个服务器包括第一服务器,用于编译计算机应用以产生至少一个服务包,并发布包含该至少一个服务包的第一位置的第一消息;第二服务器,用于接收包含该至少一个服务包的第一位置的第一消息;第三服务器,用于读取包含该至少一个服务包的第一位置的第一消息,在第二位置制作该至少一个服务包的安全副本,并发布包含该至少一个服务包的第二位置的第二消息;以及第四服务器,用于基于所述第二消息中包含的第二位置来部署该至少一个服务包。9.根据权利要求8所述的系统,其中所述第一服务器是构建服务器,所述第二服务器是消息总线服务器,所述第三服务器是储存库服务器,以及所述第四服务器是生产服务器。10.根据权利要求8所述的系统,其中将包含该至少一个服务包的第二位置的第二消息发布到所述第二服务器上。11.根据权利要求8所述的系统,其中仅可以由所述第三服务器访问所述至少一个服务包的第一位置。12.根据权利要求8所述的系统,其中通过所述第一和所述第三服务器之间的安全连接产生所述至少一个服务包的安全副本。13.根据权利要求8所述的系统,其中所述至少一个服务包是JAR文件。14.根据权利要求8所述的系统,其中所述第一服务器还充当所述第二服务器。15.一种计算机程序,包括计算机可读组件,在所述程序运行于计算机系统上时,所述计算机可读组件适于执行权利要求1所述的方法。全文摘要提供了一种用于部署SAAS(软件即服务)服务包的方法、系统和计算机可读可执行代码。编译计算机应用以产生至少一个服务包,并发布包含该至少一个服务包的第一位置的第一消息。然后,产生在第二位置的该至少一个服务包的安全副本,并发布包含该至少一个服务包的第二位置的第二消息。基于第二消息中包含的第二位置部署服务包。文档编号H04L12/24GK103004139SQ201180036366公开日2013年3月27日申请日期2011年6月7日优先权日2010年7月27日发明者S.D.哈桑,R.K.古拉帕利,J.C.普鲁伊尼申请人:惠普发展公司,有限责任合伙企业