避免网格计算应用依赖底层开发工具箱的方法技术

技术编号:2855152 阅读:210 留言:0更新日期:2012-04-11 18:40
避免网格计算应用依赖底层开发工具箱的方法是一种用于开放的网格环境中,采用控制反转等技术解耦网格上层应用对低层网格工具箱的依赖,从而使上层应用可以基于统一标准的API调用低层服务实现,而无须了解具体的服务实现提供者的技术方案。该方案解除了网格服务实现、部署描述和服务调用与网格工具箱的耦合,使网格应用的开发的编译、打包阶段可完全脱离网格工具箱进行,而网格的部署和调用阶段均实现了自动按需注入与平台相关的内容。该方案使网格工具箱对网格应用开发者完全透明,使网格应用开发流程易于简化,与代码生成、图形化界面等技术相结合使用,很大程度上方便了网格应用的开发。

【技术实现步骤摘要】

本专利技术是一种用于开放的网格环境中,采用控制反转等技术解耦网格上层应用对低层网格工具箱的依赖,从而使上层应用可以基于统一标准的API调用低层服务实现,而无须了解具体的服务实现提供者的技术方案。本技术属于网格计算中间件

技术介绍
网格被认为是下一代万维网,它是随着Web技术的发展而出现的一种新兴技术,它较好的适应了Internet的特点,能充分实现资源的共享和任务之间的协作完成。随着国内外网格研究的不断升温,有关网格应用的体系标准逐步制定完善。在2002年的第4界全球网格论坛(Global Grid Forum,GGF)会议上,IBM和Globus协作公共倡议了开放网格服务体系结构(Open Grid Services Architecture,OGSA)这一基于网格的应用的通用标准体系结构。随后GGF组织的OGSI(Open GridServices Infrastructure)工作组制定了实现OGSA中各种概念的OGSI规范为创建、管理和网格服务之间的交互定义了标准的接口、行为。相应地,网格计算应用底层支撑平台也不断推陈出新,Globus Toolkit 3.0(GT3)是第一个基于OGSI1.0标准而实现的用于开发网格应用的工具包。尽管目前越来越多的组织和机构投入到网格技术的开发中,出现了各种网格应用开发支撑平台,但是基于这些工具箱的网格应用开发存在过程繁琐、对工具箱较为依赖等不足之处。在使用这些平台编写网格应用程序之前,网格计算应用开发者必须先详细了解这些工具箱的使用方法并熟悉相应于不同工具箱的编译、部署、发布等命令和步骤。并且这些工具箱仍处于不断的更新换代之中,一旦变换了不同的开发平台,开发者必需重新花费时间和精力来掌握它的使用方法、命令及步骤。简化网格应用开发和减少其对工具箱的依赖成为影响网格技术广泛使用的重要因素。因此研究一种避免网格计算应用依赖底层开发工具箱的软件具有重要意义。
技术实现思路
技术问题本专利技术的目的是提供一种解耦网格上层应用对,使上层网格计算应用不依赖于具体哪个或者哪几个工具箱,而可以通过标准的接口以统一的方式调用低层工具箱的服务实现,平滑地用新的工具箱代替原来的工具箱,从而达到简化网格应用开发的目的和解决网格应用开发中不同工具箱变换的问题。技术方案本专利技术的控制反转器是一种改进性的方法,通过加入一个位于网格上层应用和提供网格支撑平台的低层工具箱之间的中间件而提出。该中间件使用控制反转等技术对低层工具箱进行封装,在上层网格应用调用服务时动态寻找匹配的低层工具箱的服务实现,并完成不同工具箱之间的平滑转换。在现有的网格上层应用中,由于被调用的服务实现名称写入了服务调用者的代码中,这使得服务调用者和服务提供者产生了紧密联系,在UML中用依赖Dependency表示。为了避免网格应用对工具箱的依赖,必须分割这种依赖,于是我们引入了控制反转Ioc(Inversion of Control)模式。控制反转是一种组件的协作和组织方式,它解耦调用者和被调用者的联系,分离了接口和具体实现。使用这种模式,可以不管将来具体实现,完全在一个抽象层次进行描述和技术架构,因此,Ioc模式可以为容器、框架之类的软件实现提供了具体的实现手段,属于架构技术中一种重要的模式应用。Ioc模式分为构造注入、设值注入、接口注入等多种类型,它们分别在EJB/J2EE、Avalon、SpringFramework、WebWork/Xwork、PicoContainer、HiveMind等架构中被用于实现调用者和被调用者解耦,达到分离接口与具体实现的目的。对于开放的网格环境中网格服务调用者和服务提供者的解耦,Ioc模式提供了较好的实现手段。一、体系结构我们把开放网格服务体系由上至下分为应用层、应用封装层、低层服务层和资源层,Ioc封装中间件位于应用封装层。它位于应用层和低层服务层之间,通过对低层服务层的封装,向上层提供访问低层网格服务的统一、标准接口,实现网格服务调用的动态适配,进行接口协调和管理。低层服务是传统意义上的网格服务层,低层服务主要由Globus、CSF以及SRB等开源的网格计算工具箱提供,与应用封装层的中间件不同,它们是通用的面向系统的中间件。低层服务层提供了核心的网格计算服务能力。随着网格服务体系规范的不断更新完善,势必出现各种各样的网格服务提供者。而用户关心的是怎样更好的使用网格服务来解决问题,因此通过应用封装层解耦上层对这些底层架构的依赖,巧妙地避免了用户直接对低层工具箱进行操作,达到了我们简化网格应用开发的目的。二、方法流程1.通用网格服务调用流程目前基于Web服务的网格服务是客户端/服务端模式的,图2所示的网格服务调用流程是在客户端已经通过UDDI(Universal Description,Discovery andIntegration)注册器获得网格服务端地址并从服务端得到GWSDL(Grid WSDL)网格服务描述之后,它包括网格客户端与服务端之间的一系列交互step1用户应用程序调用客户端stub,由其将本地调用转换成合适的SOAP请求;step2SOAP请求使用HTTP协议通过网络发送给服务端,网格服务容器接收到SOAP请求后将它交给服务器stub,服务器stub把SOAP请求转换为服务器实现程序能够理解的形式;step3服务器实现部分收到从服务器stub转来的请求后,执行所请求的工作;step4执行请求的结果由服务器stub处理转换为SOAP响应;step5SOAP响应使用HTTP协议通过网络发送回客户端。客户端stub收到SOAP响应并将其转换为客户端应用可以理解的形式;step6最终客户端应用接收到调用网格服务的结果并使用这个结果。2.传统网格应用开发流程传统的网格应用开发直接基于已有的网格底层支撑平台,这里我们以网格当前的最为成熟的Globus Toolkit网格工具箱为例来说明传统的网格应用开发流程。目前Globus Toolkit的正式版本为GT3(Glbus Toolkit 3),它遵照了OGSA网格体系架构及核心OGSI标准实现。使用GT3开发网格应用包括服务端的网格服务描述GWSDL、服务实现程序、网格服务部署描述WSDD(Web Service DeploymentDescriptor)文件和客户端的用户应用程序的编写,服务器stub和客户端stub的生成。通过使用GT3来编写网格服务,将其部署到GT3网格服务端并通过客户端完成服务调用的基本执行流程。下面以实现网格平台上数学运算的MathService网格服务为例阐述网格应用开发流程的主要步骤(1)网格服务器端开发流程step1用Java编写网格服务接口程序,通过Java2WSDL工具将其转换成WSDL格式的服务接口描述文件,再经过DecorateWSDL工具将其修饰成最终的WSDL服务接口描述文件;step2借助工具GSDL2Java由WSDL服务接口描述文件生成Java格式的Stub文件,再通过JAVAC编译成class格式的Stub文件,并打包成Math-stub.jar。这个包将会用于客户端的应用程序编译;step3用Java编写网格服务实现程序,通过JAVAC编译成class格式的服本文档来自技高网
...

【技术保护点】
一种避免网格计算应用依赖底层开发工具箱的方法,其特征在于它将网格应用开发与具体的网格工具箱分离开来,避免网格应用依赖于特定的开发平台;该方法的控制反转器由流程控制器、解耦器、运行调配器、封装维护器组成:流程控制器负责网格应用开发主流程,控制其他三个组件对用户提交程序的处理;封装维护器封装网格底层平台,向流程控制器提供统一的调用接口;流程控制器将所需服务的接口作为解耦器的输入,通过解耦获得调用服务所需的解耦类;运行调配器在启动服务调用时被流程控制器启动,对服务调用过程中底层平台所出现的变化进行实时处理,运用这些组件开发网格计算应用的方法具体如下:1)启动控制反转器,封装维护器和解耦器解析可用的网格计算底层平台,进行初始的预封装和解耦处理;2)由网格计算应用开发者将可在单机上运行的服务实现、服务接口 和服务调用程序提交给控制反转器,流程控制器启动网格服务开发流程;3)流程控制器启动网格服务服务端部署子流程,包括如下步骤:a.子流程控制器从解耦器获得网格服务实现的虚接口,改写服务实现程序;b.子流程控制器编译改写后 的服务实现程序和开发者所提交的服务接口程序,得到网格服务实现类及服务调用时将使用的stub类;c.子流程控制器请求解耦器进行部署解耦,获取部署描述器公共参数的公共封装类,根据网格计算应用开发者提供的服务实现程序生成网格服务部署描述文 件;d.子流程控制器将部署描述文件、改写后的服务实现程序和开发者所提交的服务接口程序打包;e.子流程控制器启动封装维护器,解析部署描述文件中的公共封装类,获得与网格计算底层平台相关的对应类;f.子流程控制器请求解耦器 进行实现解耦,根据解析后的部署描述文件将生成的解耦类与网格服务实现类发布到具体的网格计算底层平台;g.子流程控制器通知流程控制器服务端部署成功;4)流程控制器启动网格服务客户端部署子流程,包括如下步骤:a.子流程控制 器利用上一子流程生成的stub类,编译开发者提交的网格服务调用程序,得到网格服务调用类;b.子流程控制器从封装维护器获取封装后的服务公共操作类,添加网格服务调用的预启动操作;c.子流程控制器请求解耦器对所开发的网格服务进行调 用解耦,并将生成的解耦类与网格服务调用类、预启动操作一起提交给网格服务调用方;d.子流程控制器通知流程控制器客户端部署成功;5...

【技术特征摘要】

【专利技术属性】
技术研发人员:王汝传杨清
申请(专利权)人:南京邮电大学
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1