计算机软件开发方法和系统的制作方法

文档序号:7653152阅读:280来源:国知局
专利名称:计算机软件开发方法和系统的制作方法
技术领域
本发明一般涉及计算机应用软件体系结构的领域,更具体的讲,涉及提供面向模型驱动服务(model driven service oriented)的软件体系结构方法和系统。
背景技术
计算机软件程序或应用常常被开发用来解决预定环境中的特定的一组问题。但是,在预定环境中的新的类型的问题和变化常常需要计算机软件程序或应用的修改或更新。当涉及到复杂的软件程序或应用时,则改变或更新常常花费很长时间和大量工作量(effort)来完成。软件模型可以用来适应这些改变或更新,并减少完成这些改变或更新的工作量或时间量。例如,美国专利申请公开No.2005/0066338,Bloesch等人,2005年3月24日,公开了一种支持用于应用设计和操作系统交互的元对象模型(meta-object model)的应用编程接口和框架(framework)。但是,当处理大型销售网络计算应用时,这样的操作系统交互技术常常是效率低下的。
在基于网络的软件应用中,可以用稳定的连接、高带宽以及面向业务的应用为企业环境开发企业服务软件应用。企业服务软件常常以交易性的(transactional)和/或状态性的(stateful)方式来实施,并且还就功能体而言以细小颗粒度(fine granularity)来实施。另一方面,一般的网络服务软件应用可以被开发用于网络计算环境中的有规律的基于互联网的应用,在该网络技术环境中不同的计算机和不同的网络连接相互连接,并且环境的状态可以常常是不可预测的。因此,一般的网络服务软件应用常常以非交易性的和/或非状态性的(stateless)方式来实施,并且还就功能体而言以超大颗粒度来实施。
因为上述不同,企业服务软件应用和网络服务软件应用常常互相不兼容。也就是说,企业服务和网络服务在不显著改变企业服务软件应用和/或网络服务软件应用的情况下不能由单一的软件框架来访问。传统的访问企业服务和网络服务两者的尝试常常使用需要由特定服务处理的额外的自适应层(adaptation layers)和额外的带外(out-of-band)数据(例如,cookies等)。
但是,传统技术所使用的这些额外的软件组件在可以提供新的服务之前需要相当大量的软件实施。在特定环境下,不希望在提供新的一个或多个服务之前创建这样的软件实施,或者说创建这样的实施不切实际。
与所公开实施例的特定特征相符的方法和系统致力于解决上述一个或多个问题。

发明内容
本发明的一个方面包括一种用于由服务提供商提供一个或多个服务给服务消费者的方法。该方法可以包括定义描述至少一个核心服务和至少一个复合服务的元模型;基于该元模型创建用于核心服务的模型;以及基于该模型在服务提供商上实施该核心服务。该方法还包括在服务提供商上实施复合服务,以及在服务消费者实施类属(generic)访问接口,以动态地访问所述核心服务和复合服务。
本发明的另一个方面包括一种用于服务消费者访问由服务提供商提供的服务的方法。该方法可以包括获得由服务消费者用来请求由服务提供商提供的服务的服务请求,同时服务消费者可以包括类属访问接口和模型访问接口。该方法还包括确定请求的服务是核心服务还是复合服务,并且如果该服务是核心服务,确定模型访问接口是否可用于访问核心服务。而且,该方法可以包括如果该服务是核心服务并且该模型访问接口可用,则选择模型访问接口以访问由服务提供商提供的服务。


图1说明了符合特定公开实施例的操作环境的框图;图2说明了符合特定公开实施例的计算机系统的框图;图3说明了符合特定公开实施例的示范的软件体系结构的框图;图4说明了符合特定公开实施例的示范的创建处理的流程图;图5说明了符合特定公开实施例的示范的更新处理的流程图;图6说明了符合特定公开实施例的另一个示范的软件体系结构的框图;以及图7说明了符合特定公开实施例的示范的操作处理的流程图。
具体实施例方式
现在将详细参考在附图中说明的示范的实施例。附图中使用的相同的参考数字指代相同或相似的部分。
图1说明了结合本发明的特定实施例的具有计算机系统的示范的操作环境100。操作环境100可以包括通过通信网络互相连接的计算机系统以及提供来执行特定服务的计算机软件程序。操作环境100可以包括内联网(intranet)102、连接到内联网102的服务提供商计算机106(“提供商106”)、互联网104、连接到互联网104的服务消费者计算机108(“消费者108”)、以及接口连接(interfacing)内联网102和互联网104两者以便提供网络网关功能的网关110,该网络网关功能诸如安全性、协议翻译(protocol translation)、寻址等。
内联网102可以包括由一个或多个具有有限的网络访问的网络分段(network segment)组成的专用网络(private network),诸如与组织或业务实体相关联的计算机网络,被设计成可被具有适当授权的成员和/或消费者访问。提供商106可被用来主持(host)和/或实施由业务实体提供的特定服务。虽然在图1中仅仅示出了一个服务提供商计算机,但是可以包括任意数量的服务提供商计算机,并且服务可以分布在多个服务提供商计算机上。
互联网104可以包括任何公用可访问网络,或者经由传输控制协议/网际协议(TCP/IP)或任何其它合适类型的网络协议相互连接的网络。互联网104通常被认为与内联网102分离,但是可以经由网关110连接到内联网102。消费者108可以通过互联网104和内联网102访问提供商106,以便请求由提供商106提供的服务。虽然图1仅仅示出了一个连接到互联网104的服务消费者计算机,但是可以包括任意数量的服务消费者计算机。而且多个服务消费者计算机可以同时访问提供商106。
提供商106和/或消费者108可以包括任何适当类型的计算机系统。图2示出示范的计算机系统200的功能框图,该计算机系统200被配置为提供商106和/或消费者108以执行提供商106和/或消费者108的功能性,诸如与提供商和/或消费者功能相关联的计算机软件应用。此外,计算机系统200还可以被配置为计算机平台,以便设计和实施由提供商106和/或消费者108实施的计算机软件应用。基于包括在例如设计文档和/或各种模型中的抽象描述,可以实施或创建计算机软件应用。
如图2所示,计算机系统200可以包括处理器202、随机访问存储器(RAM)204、只读存储器(ROM)206、控制台(console)208、输入设备210、网络接口212、数据库214、以及存储器216。应当理解,所列出的设备的类型和数量仅仅是示范性的,并不是为了进行限定。可以改变列出的设备的数量,并且添加其它设备。
处理器202可以包括任何适当类型的通用微处理器、数字信号处理器、或微控制器。处理器202可以执行计算机程序指令序列,以执行如上所解释的各种功能。处理器202可以耦合到、或访问其它设备,诸如RAM 204、ROM206、控制台208、输入设备210、网络接口212、数据库214、和/或存储器216,以便运行计算机程序指令和/或程序数据。
计算机程序指令可以从只读存储器(ROM)206和/或存储器216载入RAM 204以用于由处理器202执行。存储器216可以包括提供的任何适当类型的大容量存储器,以存储处理器202执行计算机实施的处理可能需要的任何类型的信息。例如,存储器216可以包括一个或多个硬盘设备、光盘设备、或其它类型的存储设备。
控制台208可以提供图形用户接口(GUI)或其它类型的用户接口,以显示信息给计算机系统200的用户。控制台208可以包括任何适当类型的计算机显示设备或计算机监视器。输入设备210可以被提供给用户用来输入信息到计算机系统200。输入设备210可以包括键盘、鼠标、或其它光学或无线计算机输入设备等。
网络接口212可以提供通信连接,这样计算机系统200可以通过内联网102和/或互联网104被远程访问。数据库214可以含有由处理器202使用的任何信息。数据库214可以包括任何类型的商业的或定制的数据库。数据库214还可以包括用于分析该数据库中的信息的分析工具。
处理器202可以执行特定软件程序来实施软件框架以便在操作环境100中提供服务。图3示出软件框架的示范的软件体系结构。
如图3所示,软件体系结构300可以包括服务实施层302、服务储存库308、服务层320、访问层318、模型访问和类属访问代理层308、企业应用310、网络应用312、其它应用314等。而且,服务实施层302可以包括核心服务304和复合服务306。软件组件的数量只是示范性的,而不是为了进行限定。软件体系结构300可以实施任意数量的软件组件。
服务实施层302可以包括由服务提供商(例如,提供商106)提供的任何适当类型的服务。服务可以是预先定义的、自包括的(self-contained)、和/或独立于特定类型的软件平台和/或独立于其它功能的上下文或状态的功能。服务可以通过服务接口来访问。提供服务的软件实体或者软件实体在其上提供服务的计算机平台可以称为服务提供商,而请求服务的软件实体或者软件实体在其上请求服务的计算机平台可以称为服务消费者。服务提供商在特定环境下还可以是服务消费者。而且,在其中软件实体可以经由各种类型的连接(例如,网络连接或逻辑连接等)互相通信的网络计算环境(例如,操作环境100)中,服务还可以被称为用于交换信息的连接的端点(endpoint)。不同的服务还可以通过这些连接交换信息。
服务实施层302可以被被配置成包括多个不同类型的服务。利用通过相应服务接口定义的操作,这些服务可以被组织为服务的集合(collection)。软件体系结构300可以被设计和/或配置为经由允许各种应用访问这些服务和/或管理服务之间的通信的服务实施层302来提供这些服务。这样,就服务和它们的互相连接而言,软件体系结构300可以被称为提供解决方案的面向服务的体系结构。
服务体系结构300可以被被配置成使用软件建模(modeling)工具,以便定义和组织要由服务实施层302提供的服务。通过使用软件建模工具,诸如统一建模语言(UML)等,可以基于一组模型来组织服务。一系列变换(transformation)可以强制加在模型之间来实施服务。这种变换,诸如模型映射、模型转换、和/或代码生成等,可以由软件建模工具自动地执行或者由诸如软件开发者的用户手动地执行。因此,软件体系结构300还可被称为面向模型驱动服务的体系结构。
定义由服务实施层302提供的服务的模型(即,服务特定模型)可以描述在元模型中。元模型通常是指描述语言的模型,所述语言诸如统一建模语言(UML),利用所述语言来表达模型。也就是说,元模型可以包括用于创建各种服务特定模型,诸如业务模型、医疗模型、仓库模型等的构建块。为了说明的目的,由元模型描述的服务特定模型可以称为具体(concrete)元模型、或仅仅称为模型,用以指示服务特定模型是使用特定的元模型来定义的,并且可以进行可用于元模型的特定变换。例如,具体元模型可以用元数据来表示(represent),这些元数据可被利用诸如XML元数据相互交换(XMI)等的特定数据交换标准来传送或访问。
如上所解释的,服务实施层302可包括不同类型的服务。在特定实施例中,服务实施层302可以包括核心服务304和复合服务306。但是也可以使用其它类型的服务。
核心服务可以指支持能够被单独访问的细小颗粒度操作的服务。操作的颗粒度可以指要由操作访问的服务的属性的区域或范围。操作的细小颗粒度允许一部分属性或单独的属性由单一操作来访问或操纵。核心服务可以包括可以由不同的操作单独地访问的大量属性。而且,核心服务可以是状态性的,因为在核心服务的操作期间可以保持核心服务的运行时状态。例如,核心服务可以包括查询接口以提供单独属性的状态或改变单独属性的属性。核心服务304可以包括特定核心服务的任何适当类型的实施(即,特定核心服务的后端实施),并且还可以包括与该服务相关的状态信息。
例如,核心服务304可以包括在业务交易期间创建的采购订单。核心服务采购订单可以包括与客户信息(例如,客户姓名、地址、电话号码等)、订单信息(例如,订单编号、日期、地点等)、以及项目信息(例如,存货数量、价格、地点等)相关联的属性。而且,标题信息可被包括在采购订单中以便提供用于访问该信息的索引。而且,还可以在记录中包括注释(note)以便记录任何文本消息。
而且,核心服务采购订单可以允许服务消费者单独地访问特定的属性而不访问其它属性。例如,服务消费者可以访问客户信息而不访问订单信息。或者,服务消费者可以只访问客户姓名。服务消费者和服务提供商之间交换的数据量可以仅仅限制在所请求的信息。此外,如所解释的,核心服务304的软件执行的状态信息可以由核心服务304的服务提供商来维持。
复合服务是指与核心服务相比支持大颗粒度的操作的服务。大颗粒度的操作可以允许大部分的属性或全部属性被单一的操作访问或操纵。复合服务因此包括以整体或以大组(large group)访问服务属性的有限数量的操作。而且,复合服务可以被被配置成防止单独的访问服务属性,并且可以被被配置成访问所有属性或一组属性。这样的大颗粒度可能涉及要在单一操作中交换的大量数据。而且,复合服务的状态信息在复合服务的操作期间通常不能维持。复合服务306可以包括任何适当类型的特定复合服务的实施(即,特定复合服务的后端实施)。
接着上述采购订单的例子,复合服务308还可以包括采购订单服务。但是,复合服务采购订单可以只提供有限的接口,这些接口可以要求服务消费者在单一访问中访问所有属性,这可能导致大量的数据在服务提供商和服务消费者之间传送。此外,复合服务306可以是非状态性的。也就是说,服务提供商可能不能维持复合服务306的软件执行的状态信息。
服务实施层302、或者核心服务304和复合服务306的后端实施可以基于定义核心服务304和复合服务306的模型,在任何适当类型的计算机硬件平台或软件平台上实施。在一个实施例中,包括在服务实施层302中的服务可以在多个硬件和/或软件平台上实施。
如上所述,元模型可以被用来定义特定服务模型。在特定实施例中,可以提供统一元模型以定义核心服务304和复合服务306这两者。也就是说,核心服务304和复合服务306的完整描述可以包括在诸如企业服务定义语言(ESDL)的统一元模型中。核心服务304和复合服务306的特定服务的具体元模型可以使用诸如业务对象模型或采购订单模型等的统一元模型来定义。核心服务304和复合服务306的元模型和具体元模型可以被存储在服务储存库308中。因此,服务储存库308还可以包括描述由服务实施层302提供的服务的各种元数据以及用于定义和访问该元数据的接口。
因为统一元模型可以描述核心服务304和复合服务306这两者的服务接口的完整列表,所以可以定义公用于核心服务304和复合服务306这两者的定义,并且该定义可以用于核心服务304和复合服务306这两者。另一方面,非公用于核心服务304和复合服务306的定义可以分离地包括在统一元模型中。
在上面的采购订单示例中,核心服务采购订单(例如,核心服务304)可以由统一元模型下的业务对象元模型来描述。业务对象元模型可以包括接口、操作和类型。接口可被提供来用于与服务进行交互,并可以由接口模式(pattern)(即,交互的预先定义的抽象定义)来定义。例如,接口模式可以包括查询、访问、动作、交易、消息、动态属性、改变通知、和/或数值帮助等。而且,业务对象元模型的动态属性可以包括任何适当的运行时属性,诸如使能的/禁止的、强制的、禁用的(de-activated)、只读的、创建使能的、更新使能的、和/或删除使能的等。
核心服务采购订单元模型可以包括用于服务消费者的各种操作来访问核心服务304中的采购订单。例如,核心服务采购订单元模型可以包括“读取标题”操作,用于读取采购订单的标题信息;“寻找项目”操作,用于搜索采购订单中的特定项目;“导航”操作,用于搜索采购订单中的索引信息(例如,标题信息);和/或“通过关联检索”操作,用于获得有关的信息,等等。上面描述的操作仅仅是示范性的,而不是为了限定,还可以包括其它操作。
而且,复合服务采购订单元模型还可以在统一元模型下来定义。例如,统一元模型可以包括一个或多个复合服务操作,诸如用于在一个操作中检索(retrieve)采购订单中的所有信息的“读取数据”操作。
在特定实施例中,当统一元模型描述核心服务304和复合服务306这两者的接口时,统一元模型可以包括用于核心服务304和复合服务306的分开的接口。在其它特定的实施例中,统一元模型可以包括用于核心服务304和复合服务306这两者的公用接口。额外约束(extra constraint)可以添加到代表公用接口的接口模式,以提供描述例如要访问的服务类型等的附加信息。额外约束还可以添加到核心服务304的接口模式。如果经由复合服务306的接口访问核心服务304,则额外约束可以允许具有降低的性能的访问,诸如较低的速度和/或较低的效率等。
应当注意定义示范的采购订单的业务对象元模型只是为了说明目的。服务储存库308可以包括在统一元模型下定义的关于任何其它企业的具体元模型。例如,服务储存库308可以包括用于核心服务304和复合服务306这两者的、用于业务仓库和在线分析过程(OLAP)等的业务信息元模型。
在统一元模型下定义具体元模型,并且元数据被生成并存储在服务储存库308之后,可以通过服务层320由软件应用访问核心服务304和复合服务306。服务层320还可以基于具体元模型和统一元模型来创建。服务层320担当服务实施层302(例如,核心服务304、复合服务306等)和服务储存库308的中间人(broker)。例如,服务层320可以使用提供在接口模式中的额外约束中的附加信息,来确定服务请求是否是用于核心服务304或复合服务306。服务层320还可以响应于特定请求来访问服务储存库308以便识别可用的服务。
服务层320、服务实施层302、以及储存库308可以由服务提供商(例如,提供商106)实施以提供服务。服务消费者可以通过发送服务请求消息到服务提供商,以及从服务提供商接收返回的响应消息来访问服务。在实践中,服务消费者可以通过使用诸如企业应用310、网络应用312、以及其它应用314等的特定客户端软件应用来访问服务。
企业应用310可以包括设计来访问核心服务304的任何适当类型的软件应用,并且网络应用312可以包括设计来访问复合访问306的任何适当类型的软件应用。另一方面,其它应用314可以包括任何适当类型的第三方软件应用,所述第三方软件应用被独立地设计用于根据特定公用标准在不知道软件体系结构300的特定结构的情况下访问一般服务。所有的企业应用310、网络应用312、以及其它应用314可以通过模型访问和类属访问代理层316来访问服务实施层302。
模型访问和类属访问代理层316可以包括有助于(facilitate)或提供对服务实施层320的访问的任何软件程序。例如,模型访问和类属访问代理层316可以提供用于访问由访问实施层302提供的任意服务的类属接口。类属接口可以被用于动态地查询可用的服务提供商以及检索由可用服务提供商提供的服务接口和/或操作。然后,检索的接口和/或操作可以被用于访问服务。类属访问可以由企业应用310、网络应用312、以及其它应用314中任何一个使用来访问核心服务304或复合服务306。
另一方面,模型访问和类属访问代理层316可以提供用于访问由服务实施层302提供的任何服务的模型访问接口。模型访问接口可以包括任何适当类型的接口以用于访问特定的具体元模型。模型访问接口可以从具体元模型中获得,并且对应于特定的元模型类别,诸如业务对象元模型等。因为特定的具体元模型是预先定义和充分文档记载的(well-documented),具体元模型的接口可能为软件应用(例如,企业应用310)所知,并且可能不需要动态的查询或动态的绑定(binding)。也就是说,能够显著的提高速度和效率。
可能需要模型访问接口和类属访问接口这两者均用于提供和更新服务实施层302的服务。例如,当在原始软件产品中实施新的服务(即,要添加的服务或者对已有服务的更新)时,客户端应用可以使用一个或多个模型访问接口快速地访问新的服务。而且,当稍后一个新服务被添加到已有软件产品时,客户端应用可以立即开始经由一个或多个类属访问接口访问新服务,而不改变客户端应用。模型访问接口可以在之后开发并且被部署在客户端应用中以提高应用的访问效率。
而且,通过使用任何适当类型的储存库配置工具,一个或多个新服务,诸如新接口、新属性等的元模型,可以被添加到服务储存库308。更新的储存库308可以响应于来自服务消费者对所述一个或多个新服务的查询。
客户端应用(例如,企业应用310、网络应用312等)以及模型访问和类属访问层可以被一个服务消费者或多个服务消费者(例如,消费者108)来实施。模型访问和类属访问代理层316可以经由访问层318访问服务提供商的服务层320。
访问层318可以包括任何适当类型的软件程序,其根据特定标准提供通信和/或其它支持功能,诸如分布的组件对象模型(DCOM)、简单对象访问协议(small object access protocol,SOAP)、公用对象请求中间人体系结构(common object request broker architecture,CORBA)、JINI网络体系结构、远程程序调用(remote procedure call,RPC)、远程方法调用(RMI)等。访问层318可以由服务提供商(例如,提供商106)和服务消费者(例如,消费者108)这两者来实施,以便在服务提供商和服务消费者之间交换信息。
在特定情形下,例如,在同一计算机上实施服务提供商和服务消费者的情况下,访问层318还可以包括直接方法调用(DMI)接口以允许服务消费者直接访问由服务提供商提供的服务。在特定实施例中,直接访问可以被实施为软件功能调用。
根据软件体系结构300的软件框架或软件程序的创建和/或操作可以由一个或多个计算机系统来执行,诸如计算机系统200。图4示出了由计算机系统200、和/或计算机系统200的用户,更具体的讲,由符合特定公开实施例的处理器202执行的示范的软件创建处理。
如图4所示,处理器202可以识别要提供在软件体系结构300中的一个或多个核心服务(步骤402)。处理器202可以识别和/或文档记载要提供的所有服务,以及要支持的服务的所有接口。处理器202还识别要提供在软件体系结构300中的复合服务(步骤404)。在这样做时,处理器202还可以提供识别的复合服务的所有接口。
而且,处理器202可以定义提供识别的核心服务和复合服务的完整描述的统一元模型(步骤406)。如前面所解释的,统一元模型可以包括核心服务和复合服务这两者的接口的完整列表。在定义同一元模型之后,处理器202可以创建描述核心服务和复合服务的一个或多个模型或具体元模型(步骤408)。当添加新服务时,所述模型可以被重复使用。
基于所述模型,处理器202可以为服务提供商(例如,提供商106)实施一个或多个核心服务(例如,核心服务304)(步骤410)。处理器202还可以为服务提供商实施一个或多个复合服务(例如,复合服务306)(步骤412)。核心服务和复合服务可以以不同的软件结构或编程语言来实施。而且,处理器202还可以并入(incorporate)提供特定核心服务和/或特定复合服务的任何第三方软件程序。
各种具体元模型或模型可被存储在模型储存库中。处理器202可以创建和/或配置储存库来存储统一元模型、具体元模型、以及储存库中的任意元数据或其它相关数据(步骤414)。处理器202可以用任何适当类型的配置工具来配置储存库。此外,处理器202可以实施储存库的其它功能性,这样储存库可以被任何服务消费者访问以定位和访问服务。
而且,处理器202可以选择用于访问服务(例如,核心服务304和复合服务306等)的访问标准(例如,访问层318)(步骤416)。处理器202可以基于服务的软件平台、编程语言、操作环境等选择访问标准。可以同时支持多于一个的标准。
处理器202还可以为核心服务和复合服务提供服务接口(例如,服务层320)(步骤418)。处理器202可以独立于特定的核心服务和复合服务实施服务接口,以便例如在更新和/或添加新的核心服务和/或复合服务时减少或根本不需要(eliminate)工作量。
处理器202还可以实施客户端软件框架来访问核心服务和复合服务。而且,处理器202可以实施类属访问接口来访问核心服务和复合服务(步骤420)。处理器202可以独立于任何特定核心服务和/或复合服务实施类属访问接口,这样,基于统一元模型下的模型,类属访问接口可以用于访问任何核心服务和/或复合服务。要访问的服务的特定类型、接口、和/或操作可以在运行时传递给类属访问接口以便动态地访问服务。
处理器202还可以实施模型访问接口以访问特定服务的具体的元模型实施(步骤422)。模型访问接口可以基于对应于核心服务和/复合服务的特定服务的具体元模型对象来实施。而且,处理器202可以实施和部署使用模型访问接口和/或类属接口的客户端应用(步骤424)。客户端应用的用户可以经由模型访问接口和/或类属接口来访问核心服务、复合服务、或者这两者。
在创建软件框架或软件程序之后,软件框架或软件程序可以被服务提供商上的软件框架或软件程序的用户所部署。而且,新服务可以被添加到已有或部署的核心服务和/或复合服务,并且已有服务可以被更新。图5示出用于添加新服务或更新已有服务的示范的更新处理。
如图5所示,处理器202可以实施新服务或服务更新(步骤502)。新服务或服务更新可以基于具有统一元模型下的描述的新模型。但是,如果新服务或服务更新的接口没有完全包括在预先定义的元模型中,新接口可以被添加到元模型,并且储存库(例如,服务储存库308)也可以被更新。更新储存库可以通过如上所解释的使用特定配置工具配置储存库来执行。
处理器202可以在已有软件框架或软件程序中部署新服务或服务更新(步骤504)。也就是说,新服务可以被添加到可用于访问的后端服务实施层302。另一方面,处理器202还可以基于类属访问接口为新服务或访问更新对已有客户端应用实施和部署变更(步骤506)。因为类属访问接口可以独立于特定类型的核心服务或复合服务,对已有客户端应用的改变可以被最小化或避免。在一段时间段之后,可以访问新服务或访问更新,该时间段显著少于使用类属访问接口的常规软件改变或更新所需的时间段。
尽管可以通过类属访问接口由更新的客户端应用访问服务,处理器202还可以实施模型访问接口以提供对新服务或访问更新的更具体的访问(步骤508)。虽然与类属访问接口相比,模型访问接口会花费更多的时间和工作量来实施,但可以实质性地改善访问的速度和效率。
在实施模型访问接口之后,处理器202可以基于模型访问接口对客户端应用实施和部署变更(步骤510)。因为与类属访问接口相比,基于模型访问接口对客户端应用实施和部署改变要求更多的工作量,所以在客户端应用能够访问服务之前需要更长的时间。但是,可以在实施模型访问接口的同时,首先通过类属访问接口来访问服务。因此,所述服务可以稍后再通过模型访问接口来访问。
图6示出了符合软件体系结构300、用于在运行期间提供和访问服务的更详细的示范的软件体系结构600。软件体系结构600可以包括服务实施层601(例如,服务实施层302)、软件控制器602、服务运行时储存库608(例如,服务储存库308)、本地客户端代理604、以及服务管理器606(例如,服务层320)。软件体系结构600还可以包括客户端应用628、分类的(typed)代理630-1到630-4、分类的储存库代理632、业务对象模型代理642、业务信息模型代理644、处理对象模型代理646、类属客户端代理648、以及储存库管理器代理650。
代理(proxy)一般是指代表另一个应用或计算机系统执行一个或多个特定功能和/或一个或多个特定操作、而不表明该另一个应用或计算机系统所涉及的细节的软件中介(software agent)。例如,业务对象模型代理642可以对应于在统一元模型下定义的业务对象模型的服务。
而且,软件体系结构600还可以包括服务管理器代理624、企业数据对象626、直接方法调用(DMI)620、以及简单对象访问协议(SOAP)信道622等。本领域技术人员将认识到列出的组件仅仅是示范性的,而不是为了进行限定,其它组件和/或不同数量的组件可以由软件体系结构600实施。
可以定义包括关于复合服务和核心服务的完整描述的元模型(例如,统一元模型),所述复合服务和核心服务由业务对象提供商612、业务信息提供商614、业务进程提供商616、以及复合服务提供商618定义。服务实施层601可以包括业务对象提供商612、业务信息提供商614、业务进程提供商616。以及复合服务提供商618。业务对象提供商612、业务信息提供商614、业务进程提供商616可以提供各种核心服务。
更具体的讲,业务对象提供商612可以基于业务交易的具体元模型描述提供核心服务;业务信息提供商614可以基于描述业务仓库(warehouse)(例如,数据库仓库)以及在线分析处理(OLAP)的具体元模型提供核心服务;以及业务进程提供商616可以基于描述业务活动(activities)的具体元模型提供核心服务,所述业务活动被设计以产生用于特定客户的特定输出或者在组织中跨越时间和空间的市场。
定义的元模型、具体元模型、以及相关元数据可以被存储在服务运行时储存库608(例如,储存库308)中,并且可以在运行时期间访问。服务和服务运行时储存库608可以经由服务管理器606(例如,访问层320)来访问。
而且,软件控制器602可以协调在服务提供商(例如,业务对象提供商612、业务信息提供商614、业务进程提供商616、以及复合服务提供商618)、服务管理器606、以及服务运行时储存库608之间的交易。例如,软件控制器602可以提供特定服务处理器(handler)和/或网络服务设施(utilities),诸如命名和目录服务,以便帮助访问服务提供商和/或服务储存库608。软件控制器602还可以提供统一消息处理、连接信道通知、和/或动态属性处理等。
客户端应用628(例如,企业应用310、网络应用312、其它应用314等)可以经由不同的接口访问服务提供商。例如,客户端应用628可以使用类属客户端代理648(例如,类属访问接口)直接访问服务提供商,或者使用类属客户端代理648经由分类的代理630-4访问服务提供商。客户端应用628还可以使用业务对象模型代理642、业务信息模型代理644、或处理对象模型代理646访问服务提供商,或者分别使用业务对象模型代理642、业务信息模型代理644、或处理对象模型代理646经由分类的代理630-1、分类的代理630-2、或分类的代理630-3来访问服务提供商。
类属客户端代理648可以提供类属访问接口,用于访问由服务实施层601提供的服务。为了使用由类属客户端代理648提供的类属访问接口,诸如相应具体元模型和/或元数据的信息可以由客户端应用628经由储存库管理器代理650从服务运行时储存库608获得。但是,其它储存库服务也可以由类属客户端代理648使用。
业务对象模型代理642、业务信息模型代理644、或处理对象模型代理646可以提供用于访问分别对应于业务对象提供商612、业务信息提供商614、或业务进程提供商616的服务的模型访问接口。各种模型代理可以包括用于由相应服务提供商提供的特定类型的核心服务的特定接口、属性、和/或操作,或者相应的具体元模型。
各分类的代理(例如,分类的代理630-1到630-4以及分类的储存库代理632等)可以提供相应的代理(例如,业务对象模型代理642、业务信息模型代理644、处理对象模型代理646、类属客户端代理648、以及储存库管理器代理650)的类型检查的(type-checked)调用。由分类的代理提供的类型检查可以保证对相应代理的任何调用的语法正确,以便减少运行时编译错误和/或其它类型的运行时错误。
此外,代理可以经由服务管理器代理624访问服务提供商。服务管理器代理624可以包括功能接口或方法调用接口,以便提供通过服务管理器606到服务提供商的连接。服务管理器代理624还可以包括企业数据对象626,以提供为一些或所有代理所公用的数据容器(container)。服务管理器代理624可以经由直接方法调用620或简单对象访问协议(SOAP)信道(例如,访问层318等)提供对服务管理器606的连接。也可以使用其它中间件标准。
当使用直接方法调用620时,诸如在装置(means)客户端应用628与服务提供商在同一计算机平台上时,本地客户端代理604可以用于处理方法调用(或者功能调用),而不用其它类型的访问的消息处理。此外,服务管理器代理624还可以支持服务数据对象(SDO)652,这样符合SDO标准的第三方应用可以经由服务管理器代理624访问服务提供商。
根据软件体系结构600创建和/或更新软件框架可以以按照软件体系结构300的软件框架或程序类似的方式来执行。根据软件体系结构600的客户端应用的操作处理可以包括更详细的操作。图7示出了可以由计算机系统200、更具体地讲,由处理器202执行的示范的客户端应用操作处理。
如图7所示,在客户端应用操作处理的开始,处理器202获得服务请求(步骤702)。在客户端应用628的用户调用客户端应用628的特定程序时,或者在由任何其它软件程序请求时,处理器202可以获得服务请求。在获得服务请求之后(步骤702),处理器202可以确定请求的服务是核心服务还是复合服务(步骤704)。如果处理器202确定请求的服务是复合服务(步骤704;否),处理器202可以选择类属客户端代理650(步骤710)。
另一方面,如果处理器202确定请求的服务是核心服务(步骤704;是),处理器202还确定相应的模型代理(例如,业务对象模型代理642、业务信息模型代理644、或处理对象模型代理646等)是否可用(步骤706)。如果相应的模型代理不可用(步骤706;否),处理器202还可以选择类属客户端代理(步骤710)。但是,如果相应的模型代理可用(步骤706;是),处理器202可以选择用于访问请求的核心服务的可用模型代理(步骤708)。
而且,处理器202可以确定是否请求分类的访问(步骤712)。如果请求了分类的访问(步骤712;是),处理器202可以为选择的模型代理或类属客户端代理编译和/或调用相应的分类的代理,诸如分类的代理630-1到630-4以及分类的储存库代理632等(步骤714)。处理器202还可以报告在分类的访问期间的任何编译错误。如果没有请求类型访问(步骤712;否),或者在没有错误的情况下编译了相应的分类的代理之后(步骤714),处理器202可以生成企业数据对象626作为用于请求的服务的数据容器,并且可以调用服务管理器代理624(步骤716)以访问请求的服务。
处理器202还可以确定请求的访问是否是直接或本地访问(步骤718)。如果请求的访问是直接或本地访问(步骤718;是),处理器202可以经由直接方法调用访问请求的服务(步骤720)。另一方面,如果请求的访问不是直接或本地访问(步骤718;否),处理器202可以经由SOAP信道622访问请求的服务。但是也可以使用其它连接。服务提供商可以接收请求的服务,并且如前面所解释的,使用以上公开的访问方法论(methodologies),但是是以相反的次序(例如,直接调用方法620或SOAP信道622、服务管理器代理624等),将相应的服务响应发送到客户端应用628。
通过使用模型访问接口(例如,诸如业务对象模型代理642、业务信息模型代理644、处理对象模型代理646、或储存库管理器代理650等的模型代理)和类属访问接口(例如,类属客户端648等)这两者,客户端应用628能够灵活地访问同一软件框架内的核心服务和复合服务这两者。此外,可以通过类属访问接口提供新服务或已有服务的更新,以便显著的减少营销的时间和/或实施工作的量,而更成熟复杂和更具体的解决方案可以稍后被提供给新服务或服务更新,以提高软件框架的速度和/或效率。
因此,用户或软件处理可以使用统一元模型来定义服务提供商上的核心服务和复合服务这两者,并且还可以使用客户端软件应用通过公用软件框架或体系结构访问核心服务和复合服务。核心服务和复合服务的模型可以在企业内重复使用以提供测试的解决方案。第三方软件组件还可以通过使用公用标准来整合。
公开的示范方法和系统的其它实施例、特征、方面、和原理对本领域技术人员来讲是清楚的,并且可以在各种环境和系统中实施。例如,第三方软件应用开发者能够修改公开的软件体系结构,以创建利用网络服务应用中的核心服务和复合服务这两者的软件程序,或者创建客户端软件应用以便与公开的服务提供商体系结构等一起工作。
权利要求
1.一种用于由服务提供商提供一个或多个服务给服务消费者的方法包括定义描述至少一个核心服务和至少一个复合服务的元模型;基于所述元模型创建用于所述核心服务的模型;基于所述模型在服务提供商上实施所述核心服务;在所述服务提供商上实施所述复合服务;以及在所述服务消费者上实施类属访问接口以便动态地访问所述核心服务和所述复合服务。
2.根据权利要求1所述的方法,还包括基于所述模型在所述服务消费者上实施模型访问接口,以便只访问所述核心服务。
3.根据权利要求2所述的方法,还包括在所述服务提供商上的储存库中存储所述元模型;以及在所述服务消费者部署第一客户应用,以便针对核心服务和复合服务中的至少一个来访问所述服务提供商。
4.根据权利要求3所述的方法,还包括在所述服务提供商上实施核心服务中的新服务;以及配置所述储存库以使新的服务可用于所述服务消费者。
5.根据权利要求4所述的方法,还包括由所述服务消费者上的所述第一客户应用使用所述类属访问接口访问所述新的服务。
6.根据权利要求5所述的方法,还包括部署第二客户应用来替代所述服务消费者上的第一客户应用,以便访问所述服务提供商的服务,其中所述第二客户应用具有对应于所述新的服务的模型访问接口。
7.一种用于访问由服务提供商提供的一个或多个服务的方法,包括获得由服务消费者用来请求由所述服务提供商提供的服务的服务请求,其中所述服务消费者包括类属访问接口和模型访问接口;确定所述请求的服务是核心服务还是复合服务;如果所述服务是核心服务,则确定所述模型访问接口是否可用于访问所述核心服务;以及如果所述服务是核心服务,并且所述模型访问接口可用,则选择模型访问接口作为选择的用于访问由所述服务提供商提供的服务的访问接口。
8.根据权利要求7所述的方法,还包括如果所述服务是复合服务,或者如果所述服务是核心服务并且模型访问接口不可用,则选择类属访问接口作为选择的用于访问由服务提供商提供的服务的访问接口。
9.根据权利要求8所述的方法,还包括对所选择的访问接口执行类别检查;以及生成数据容器以便提供用于所述服务请求和所选择的访问接口的运行时存储器空间。
10.根据权利要求9所述的方法,还包括确定所述服务消费者和所述服务提供商是否在同一计算机平台上;以及如果所述服务消费者和所述服务提供商在同一计算机平台上,则经由直接方法调用方法来调用所选择的访问接口。
11.根据权利要求10所述的方法,还包括如果所述服务消费者和所述服务提供商不在同一计算机平台上,则经由在所述服务消费者和所述服务提供商之间的简单对象访问协议(SOAP)信道来访问所选择的访问接口。
12.一种系统,包括第一计算机,被配置成提供包括至少一个核心服务和至少一个复合服务的服务;第二计算机,被配置成访问由所述第一计算机提供的服务;以及一个或多个计算机网络连接,被配置成耦合所述第一计算机和所述第二计算机,其中所述第一计算机还包括处理器,该处理器被配置成基于描述所述核心服务和所述复合服务的元模型创建用于所述核心服务的模型,基于所述模型在所述服务提供商上实施所述核心服务,在所述服务提供商上实施所述复合服务,以及在所述第一计算机上的储存库中存储所述元模型。
13.根据权利要求12所述的系统,其中所述第二计算机还被配置成在所述第二计算机上实施类属访问接口,以便动态地访问所述核心服务和所述复合服务;基于所述模型在所述第二计算机上实施模型访问接口,以便只访问所述核心服务;以及在所述第二计算机上部署第一客户应用,以便使用所述类属访问接口和所述模型访问接口之一针对所述核心服务和所述复合服务中的至少一个访问所述服务提供商。
14.根据权利要求13所述的系统,其中所述处理器还被配置成在所述第一计算机上实施所述核心服务中的新的服务;以及配置所述储存库以便使所述新的服务可用。
15.根据权利要求14所述的系统,其中所述第二计算机还被配置成由所述第二计算机上的第一客户应用使用所述类属访问接口访问新的服务。
16.根据权利要求15所述的系统,其中所述第二计算机还被配置成部署第二客户应用以替代服务消费者上的第一客户应用,以便访问第一计算机上的核心服务,其中所述第二客户应用具有对应于新的服务的模型访问接口。
17.一种用在计算机系统上的计算机可读介质,该计算机系统被配置成用于服务消费者访问由计算机系统上的服务提供商提供的服务,该计算机可读介质具有用于执行一种方法的计算机可执行指令,该方法包括获得由服务消费者用来请求由服务提供商提供的服务的服务请求,其中所述服务消费者包括类属访问接口和模型访问接口;确定所述请求的服务是核心服务还是复合服务;如果所述服务是核心服务,则确定所述模型访问接口是否可用于访问所述核心服务;以及如果所述服务是核心服务,并且所述模型访问接口可用,则选择模型访问接口作为选择的用于访问由服务提供商提供的服务的访问接口。
18.根据权利要求17所述的计算机可读介质,其中所述方法还包括如果所述服务是复合服务,或者如果所述服务是核心服务并且所述模型访问接口不可用,则选择类属访问接口作为选择的用于访问由所述服务提供商提供的服务的访问接口。
19.根据权利要求18所述的计算机可读介质,其中所述方法还包括对所选择的访问接口执行类别检查;以及生成数据容器以便提供用于所述服务请求和所选择的访问接口的运行时存储器空间。
20.根据权利要求17所述的计算机可读介质,其中所述方法还包括确定所述服务消费者和所述服务提供商是否两者均在所述计算机系统上;以及如果所述服务消费者和所述服务提供商两者均在所述计算机系统上,则经由直接方法调用来调用所选择的访问接口;以及如果所述服务消费者和所述服务提供商不是两者均在所述计算机系统上,则经由在所述服务消费者和所述服务提供商之间的简单对象访问协议(SOAP)来访问所选择的访问接口。
全文摘要
提供了用于由服务提供商提供一个或多个服务给服务消费者的方法。该方法可以包括定义描述至少一个核心服务和至少一个复合服务的元模型;基于元模型创建用于核心服务的模型;以及基于该模型在服务提供商实施核心服务。该方法可以还包括在服务提供商上实施复合服务,以及在服务消费者上实施类属访问接口以动态的访问核心服务和复合服务。
文档编号H04L29/06GK101075333SQ20071010415
公开日2007年11月21日 申请日期2007年5月21日 优先权日2006年5月19日
发明者弗兰克·布伦斯威格, 托马斯·菲德勒, 奥利弗·戈茨, 斯蒂芬·劳, 斯蒂芬·温内克, 沃尔克·威彻斯 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1