专利名称:分布式应用程序的面向对象和面向服务的表示之间的映射的制作方法
技术领域:
本发明涉及分布式应用程序,尤其涉及在分布式应用程序的面向对象和面向服务的表示之间的映射。
背景技术:
计算机系统和相关技术影响着社会的许多方面。实际上,计算机系统处理信息的能力转换了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现之前手工执行的大量任务(例如,文字处理、调度、数据库管理等)。近来,计算机系统被彼此耦合并耦合到其它电子设备以形成有线和无线计算机网络,通过计算机网络,计算机系统和其它电子设备可传输电子数据。结果,在计算机系统处执行的许多任务(例如,语音通信、访问电子邮件、控制家用电器、web浏览和打印文档)包括通过有线和/或无线计算机网络在多个计算机系统和/或其它电子设备之间的电子消息交换。
网络实际上已变得如此丰富,使得简单的启用网络的计算系统可通过通常被称为“因特网”的网络聚集与遍及全球的上百万的其它计算系统中的任一个进行通信。这类计算系统可包括台式机、膝上型计算机或图形输入板个人计算机;个人数字助理(PDA);电话机;或能够通过数字网络通信的任何其它计算机或设备。
为通过网络通信,一个计算系统(此处称为“发送计算系统”)构造或访问电子消息,并将该电子消息通过网络发送到另一计算系统(此处称为“接收计算系统”)。当电子消息是电子邮件或即使消息时,电子消息可由人类用户读取,或者电子消息可改为由运行在接收计算系统上的应用程序读取。电子消息可由运行在发送计算系统上的应用程序在人类用户的可能帮助下构造。
在某些环境中,诸如在面向服务的体系结构环境中,连接端点(通常且在后文被称为“服务”)彼此通信以实现期望的功能。期望的功能可以如同两个服务交换数据那样简单。例如,服务消费者可向服务提供者发送服务请求消息。服务提供者处理该服务请求,并向服务消费者返回服务响应消息。然而,期望的功能也可以更复杂,例如,涉及多个服务交换消息以协调某一活动。服务通常具有支持连接端点的某种类型的计算机系统(硬件和软件)。
面向服务的概念描述(地址、绑定和消息交互模式)可用于描述服务。面向服务的概念描述随后可由期望与所描述服务通信的服务消费者来访问。一般而言,面向服务的概念是依照诸如分布式组件对象模型(“DCOM”)、公共对象请求代理体系结构(“CORBA”)、或web服务等某一面向服务标准来描述的。web服务还可依照诸如web服务描述语言(“WSDL”)、web服务策略框架(“WS-Policy”)等各种web服务规范来定义。
由此,服务提供者可使用WSDL来描述服务。在局域网(“LAN”)或甚至是已知的互连网络之间,服务提供者可例如使用统一描述、发现和集成(“UDDI”)来向服务目录发行描述。能够访问目录的明白的服务消费者可发出针对目录的查询,以定位WSDL服务描述。由服务提供者发行的WSDL服务描述的各部分可响应于查询而被传递到服务消费者。服务消费者使用WSDL服务描述的各部分来向服务提供者发送已适当格式化的请求。服务提供者反过来向服务消费者提供适当的响应。
然而,为依照指定的面向服务的概念描述来实现服务,必须有处理如在面向服务的概念描述中描述的消息的可执行模块。由此,开发者通常编写源代码(例如,以面向对象的语言,诸如C#、C++或Visual Basic)来为面向服务的概念描述中所描述的服务实现消息处理。源代码然后可被编译成可执行模块(例如,动态链接库),并且例如作为服务器运行库来执行,以向服务消费者提供服务。
不幸的是,服务可利用以不同的方式实现分布式消息通信功能的不同编程模型。例如,一个编程模型可使用一个接口来实现请求消息,并使用第二不同的接口来实现对应的回复消息。另一方面,另一编程模型可使用具有分离方法的单个接口来同时实现请求消息和对应的回复消息两者。单个接口可具有用于请求消息的一个方法和用于对应的回复消息的第二不同的方法。由此,基于不同的编程模型的服务通常不能彼此通信。
此外,分布式应用程序通常在其编程模型方面是严格的,从而仅允许紧密地耦合到其服务运行库的一个编程模型。因此,为兼容性起见,通常要求客户机运行库(例如,服务消费者处)依照与用于开发相应服务运行库的编程模型来处理消息。例如,如果服务运行库是使用用于请求和回复消息的分离接口并使用特定的安全机制来开发的,则客户机运行库必须也实现那些接口或机制。无法使用依照同一编程模型开发的客户机运行库可阻止客户机运行库与服务运行库通信。
不幸的是,总是存在没有为服务运行库发行服务描述的某些机率。此外,即使已发行了服务描述,客户机可能不知道所发行的服务描述存在,或可能被阻止(例如,被安全机制或网络条件)访问已发行的服务描述。在更大的分布式网络中,诸如因特网中,发生这些困难的机率显著提高。由此,可能很难(如果不是不可能的话)依照适当的编程模型来实现客户机运行库。结果,可能阻止客户机与服务器运行库通信。
因此,用于以其它方式访问服务描述的系统、方法和计算机程序产品将是有利的。
发明内容
现有技术的以上问题由本发明的原理来克服,本发明针对用于分布式应用程序的面向对象和面向服务的表示之间的映射的方法、系统和计算机程序产品。计算机系统访问服务的已注释的面向对象的表示。已注释的面向对象的表示是用服务描述属性来注释的,该服务描述属性将包括在面向对象的表示中的对象映射到服务的面向服务的表示中的对应的面向服务的数据元素。
计算机系统标识注释已注释的面向对象的表示的对象的服务描述属性。计算机系统依照包含在所标识的服务描述属性中的服务描述信息将对象映射到对应的面向服务的元素。计算机系统输出被配置成实现面向服务的表示中所描述的行为和格式数据的通道对象。计算机系统启动与服务的行为和数据格式兼容的通道。
本发明的这些和其它目标以及特征将从以下描述和所附权利要求书中变得明显,或可通过如下所述的对本发明的实践而了解。
为进一步阐明本发明的上述和其它优点和特征,将参考附图中示出的其具体实施例来呈现本发明的更具体描述。可以理解,附图仅描绘了本发明的典型实施例,并且因此不被认为是局限本发明的范围。本发明将通过使用附图以附加的特殊性和细节来描述,附图中图1示出了便于分布式应用程序的面向对象和面向服务的表示之间的映射的计算机体系结构的示例。
图2示出了分布式应用程序的面向对象的表示和同一分布式应用程序的面向服务的表示之间的示例映射。
图3示出了用于启动通道栈的方法的示例流程图。
图4示出了用于本发明的原理的合适的操作环境。
具体实施例方式
现有技术的以上问题由本发明的原理来克服,本发明针对用于分布式应用程序的面向对象和面向服务的表示之间的映射的方法、系统和计算机程序产品。计算机系统访问服务的已注释的面向对象的表示。已注释的面向对象的表示是用服务描述属性来注释的,该服务描述属性将包括在面向对象的表示中的对象映射到服务的面向服务的表示中的对应的面向服务的数据元素。
计算机系统标识注释已注释的面向对象的表示的对象的服务描述属性。计算机系统依照包含在所标识的服务描述属性中的服务描述信息将对象映射到对应的面向服务的元素。计算机系统输出被配置成实现面向服务的表示中所描述的行为和格式数据的通道对象。计算机系统启动与服务的行为和数据格式兼容的通道。
本发明范围内的实施例包括用于携带或具有在其上储存的计算机可执行指令或数据结构的计算机可读介质。这类计算机可读介质可以是可由通用或专用计算机系统访问的任一可用介质。作为示例而非局限,这类计算机可读介质可包括物理存储介质,诸如RAM、ROM、EPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或其它可用来以计算机可执行指令、计算机可读指令或数据结构的形式携带或储存所期望的程序代码装置并可由通用或专用计算机系统访问的任一介质。
在本描述和所附权利要求书中,“网络”被定义为能够在计算机系统和/或模块之间传输电子数据的一个或多个数据链路。当通过网络或另一通信连接(或者硬布线、或者无线、或者硬布线和无线的组合)向计算机系统传输或提供信息时,适当地将该连接视为计算机可读介质。由此,任何这样的连接被适当地称为计算机可读介质。上述的组合也应当被包括在计算机可读介质的范围之内。计算机可执行指令包括,如,使通用计算机系统或专用计算机系统执行某个或某组功能的指令和数据。计算机可执行指令可以是,例如二进制代码、诸如汇编语言等中间格式指令、或甚至是源代码。
在本描述和所附权利要求书中,“计算机系统”被定义为一个或多个软件模块、一个或多个硬件模块或其组合,它们共同工作以对电子数据执行操作。例如,计算机系统的定义包括个人计算机的硬件组件,以及诸如个人计算机的操作系统等软件模块。模块的物理布局不是重要的。计算机系统可包括通过网络耦合的一个或多个计算机。同样,计算机系统可包括单个物理设备(诸如移动电话或个人数字助理“PDA”),其中内部模块(诸如存储器和处理器)共同工作以对电子数据执行操作。
在本描述和所附权利要求书中,“对象”被定义为可被单独选择和操纵的任何项。对象被定义为包括软件对象,例如方法以及其它软件对象,它们包括数据和操纵数据的过程。对象也被定义为包括可在软件对象之间交换(例如,作为输入或输出提供)的参数和返回值(例如,方法参数和方法返回值)。
在本描述和所附权利要求书中,“合约”被定义为包括消息格式和消息交互模式的描述的声明性编程模型。
本领域的技术人员可以理解,本发明可以在具有多种类型的计算机系统配置的网络计算环境中实施,包括个人计算机、膝上型计算机、手持式设备、多处理器系统、基于微处理器或可编程消费电子设备、网络PC、小型机、大型计算机、移动电话、PDA、寻呼机等。本发明也可以在分布式系统环境中实践,其中,通过网络连接(或者通过硬布线数据链路、或者通过无线数据链路、或者通过硬布线或无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
如计算机体系结构100中所描述的,计算机系统101和111连接到网络121。网络121可以是局域网(“LAN”)、广域网(“WAN”)或甚至是因特网。连接到网络121的计算机网络可从连接到网络121的其它计算机系统接收数据或向其发送数据。因此,计算机系统101和111以及其它连接的计算机系统(未示出)可创建消息相关数据并通过网络101交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其它较高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件控制协议(“SMTP”)等)。例如,计算机系统101和111可创建SOAP信封并通过网络121交换SOAP信封。
计算机系统101包括类型加载器103和通道运行库105。类型加载器103被配置成接收服务的已注释的面向对象的表示(例如,服务类型)。例如,类型加载器103可被配置成接收服务类型(例如,公共语言运行库(“CLR”)类型)或表示基于网络的服务的其它面向对象的对象。在某些实施例中,基于网络的服务是依照指定的编程模型来表示的。指定的编程模型可以是实现一个或多个接口的类型。每一接口还可实现一个或多个方法。每一方法可被配置成交换输入参数、输出参数以及返回值。
类型中包括的接口、方法、输入参数、输出参数和返回值可以用描述对应的面向服务的元素的服务描述属性来注释。例如,服务描述注释可以将面向对象的接口映射到面向服务的合约等。因此,类型加载器103可加载服务类型,并剖析已编译的代码以标识到服务的面向服务的表示的映射。类型加载器103可使用该映射来生成面向服务的表示的相关服务描述信息。例如,类型加载器103可以参考面向对象的接口的服务描述属性为对应的合约、绑定和地址创建面向服务的描述。类型加载器103然后可生成包括在面向对象的表示中的通道对象。通道对象然后可用于启动用于访问服务的适当通道。
一般而言,通道105用于兼容地与服务的对应服务运行库进行通信。通道105可包括便于兼容通信的模块,诸如方法121、方法123以及转换器134。
方法121可向转换器134提交输入参数(例如,输入参数122)。转换器134然后可将输入参数(依照先前访问的服务描述信息)转换成适当格式化的消息(例如,请求消息),并将该适当格式化的消息发送到对应的服务运行库。随后,服务运行库可向转换器134返回类似格式化的消息(例如,回复消息),包括输出参数和/或返回值。转换器134可将接收的消息参数(依照先前访问的服务描述信息)转换成输出参数(例如,输出参数124)和/或返回值(例如,返回值126)。转换器134可向方法123提交输出参数(和/或返回值)。
计算机系统111包括服务运行库112。服务运行库112可(依照服务描述信息)展示执行某一功能的服务。例如,服务运行库112可展示能够执行各种数学运算的计算器服务。
在某些实施例中,服务描述信息被排列成树格式。服务描述信息可包括一个或多个端点(属于适当的端点类)。端点可包括端点地址、绑定、以及一个或多个合约描述。端点地址是用于与描述的服务(例如,服务运行库112)通信的电子地址(例如,统一资源定位器(“URL”))。
绑定指示当与所描述的服务通信时数据如何传输。绑定可包括应用于不同的传输特征的多个不同的绑定元素,诸如传输绑定元素(例如,使用超文本传输协议(“HTTP”)或传输控制协议(“TCP”))、编码器绑定元素(例如,使用UTF-8或UTF-16)、安全绑定元素(例如,使用指定的加密类型)等等。
合约描述指示了当与所描述的服务通信时传输什么数据(例如,消息交互模式)。合约描述可包括一个或多个操作。例如,用于基于网络的数学服务的合约描述可包括用于加法、减法、乘法和除法的操作。每一操作可包括一个或多个消息。例如,加法操作可包括包含两个整数的请求消息以及包含这两个整数的和的回复消息。
由此,合约描述可指示用于与基于网络的服务(例如服务运行库112)进行通信的消息交互模式。某些操作可包括单个消息,例如输入或输出消息。其它操作可包括两个消息,例如请求消息和回复消息。
现在参考图2,图2示出了分布式应用程序的面向对象的表示255和同一分布式应用程序的面向服务的表示205之间的一个示例映射。在面向服务的表示205内,服务201包括合约202。合约202依照指定的编程模型表示了服务201的实现。垂直省略号203(垂直的一系列三个圆点)表示其它合约可依照其它编程模型来实现服务201。
合约202包括表示服务实现的行为的操作212和213。例如,如果合约202表示用于数学服务的编程模型,则操作212和213可表示特定的数学操作(例如,加法、减法等)。垂直省略号214表示其它操作可以包括在合约202内。每一操作可以依照指定的消息交互模式来实现。在某些实施例中,消息交互模式是输入消息、输出消息、或请求消息和对应的回复消息中的一个。
例如,操作212包括消息232(输入或输出消息)。另一方面,操作213包括消息233(请求消息)和消息234(回复消息)。其它数据元素可用于描述包括在消息中的数据的内容和格式。例如,头部244和主体246可为消息234描述数据格式(例如,SOAP消息格式)。省略号242(水平的一系列三个圆点)表示其它数据元素可用于描述消息232的内容。省略号243(水平的一系列三个圆点)表示其它数据元素可用于描述消息232的内容。
在面向对象的表示255中,类251(例如,CLR类型)包括接口252。如图所示,接口252是用服务合约属性253来注释的。服务合约属性253可包括描述合约202(以及可能还有地址和绑定)的服务描述信息。因此,如由映射291所表示的,接口252被映射到合约202(以及可能还有地址和绑定)。垂直省略号253表示类251可包括其它(可能已注释的)接口(例如,到用于实现服务201的其它编程模型的映射)。
接口252包括方法262和264。如图所示,方法262是用操作合约属性263来注释的。操作合约属性263可包括描述操作213的服务描述信息。因此,如由映射292所表示的,为操作213所描述的行为(例如,计算两个数字的和)可被映射到方法262。尽管未明确示出,但方法264也可被注释并被映射到合约264的操作。垂直省略号266表示接口252可包括其它(可能已注释的)方法(例如,到合约262的其它操作的映射)。
方法262包括参数273和返回值274。如图所示,参数273是用消息合约属性276来注释的,且返回值274是用消息合约属性277来注释的。消息合约属性276可包括描述消息233的数据元素的服务描述信息。类似地,消息合约属性277可包括描述消息234的数据元素的服务描述信息。在某些实施例中,所描述的数据元素是可扩展标记语言(“XML”)元素。
参数273和返回值274也可用数据合约属性278来注释。数据合约属性278可包括描述在消息233和234中使用的数据格式的服务描述信息。例如,数据合约属性278可以指指示消息233和234的数据元素是整数值(或某一其它类型的值)的描述性信息。因此,如由映射293所表示的,消息233中所描述的数据元素和格式(例如,用于两个整数值的XML数据元素)可被映射到参数273,而消息234中所描述的数据元素(例如,用于两个整数值的和的XML数据元素)可被映射到返回值274。
垂直省略号267表示在方法264以及合约212内的其它消息的输入参数、输出参数和/或返回值之间可以有类似的数据元素和数据格式映射。
本发明的实施例允许从包括在类(例如,服务类型)中且可用于启动通道的服务描述信息生成外部服务描述信息。有了对服务描述信息的访问,对应的通道可被更有效地配置成与所描述的服务通信。例如,开发者可为服务的面向对象的表示内的服务提供端点(包括合约、绑定和地址)、行为、数据元素和数据格式的服务描述信息。因此,可以用更有效的方式实现通道和服务运行库之间的互操作性。
以下示例代码指令描绘了分别用服务合约属性和操作合约属性注释的接口和所包括的方法第1行 [ServiceContractAttribute(<服务描述信息A>)]第2行interface IExample第3行{第4行 [OperationContractAttribute(<服务描述信息B>)]第5行void Example();第6行}
第1行的属性[ServiceContractAttribute](服务合约属性)注释了第2行的接口IExample。[ServiceContractAttribute]包括描述例如服务端点的<服务描述信息A>。服务端点可包括诸如合约202的合约、绑定和地址等。第4行的属性[OperationContractAttribute](操作合约属性)注释了第4行的方法Example。[OperationContractAttribute]包括描述例如面向服务的操作(例如,操作213)的<服务描述信息B>。<服务描述信息B>也可包括在作为面向服务的操作的一部分交换的消息中包括的统一资源定位器(名字)。
该示例代码指令可在配置信息中使用来定义通信端点。例如第7行<endpoints>
第8行<endpoint第9行 address=”http://localhost/Example/Ep1”第10行binding=”basicProfileHttpBinding”第11行contract=”IExample”/>
第12行</endpoints>
第7行和12行分别表示已定义的端点的开始和结尾。第8行到第11行表示特定端点的定义。第9行表示端点的地址。第10行表示端点的绑定,例如包括传输协议、安全设置等。第11行指的是由上述示例代码指令表示的合约。第11行指示通过该端点传输的消息要依照所描述的示例代码指令来处理(例如,在XML和面向对象的参数之间转换,反之亦然)。通道运行库可实现用于在端点和适当的可执行代码之间的消息传输控制的功能。
图3示出了用于启动通道栈的方法300的示例流程图。图3将参考计算机体系结构10、面向服务的表示205和面向对象的表示255中的组件和数据来描述。
方法300包括访问服务的已注释的面向对象的表示的动作(动作301),该已注释的面向对象的表示是用服务描述属性来注释的,服务描述属性将包括在面向对象的表示中的对象映射到服务的面向服务的表示中的对应的面向服务的数据元素。例如,类型加载器103可访问已注释的面向对象的表示102。已注释的面向对象的表示102可表示类似于类251的类型化的类(例如,CLR类)。已注释的面向对象的表示102可包括一个或多个接口(例如,接口252)。每一接口可包括具有输入参数(例如,输入参数273)和输出参数和/或返回值(例如返回值274)的一个或多个方法(例如,方法262)。包括在已注释的面向对象的表示102中的对象(接口、方法、参数等)可用服务描述属性来注释。
方法300包括标识注释已注释的面向对象的表示的对象的服务描述属性的动作(动作302)。例如,类型加载器103可标识注释已注释的面向对象的表示102的接口的服务合约属性(例如,服务合约属性253)。服务合约属性可包括在WSDLXML文档和/或用于配置通道的配置信息中使用的名字和名字空间。
也可标识其它类型的属性。例如,类型加载器103可标识操作合约属性(例如,操作合约属性263)、消息合约属性(例如,消息合约属性263)、消息合约属性(例如,消息合约属性276)、以及数据合约属性(例如,数据合约属性278)。这些其它类型的属性可包括在WSDL XML文档中使用的名字和名字空间。
方法300包括依照包含在所标识的服务描述属性中的服务描述信息将对象映射到对应的面向服务的元素的动作(动作303)。例如,类型加载器103可映射来自已注释的面向对象的表示102的接口、方法、参数和/或返回值(到对应的面向服务的元素)。例如,分别依照包含在服务合约属性253、操作合约属性263以及消息合约属性276中的服务描述数据,接口252可被映射到合约202,方法262可被映射到操作213,参数273可被映射到消息233和234。
方法300包括输出被配置成实现面向服务的表示中所描述的行为和数据格式的通道对象的动作(动作304)。例如,基于包含在服务描述属性中的服务描述信息,类型加载器103可生成并输出通道对象104。通道对象104可以是包括在已注释的面向对象的表示102中的类型(例如,类251)。通道对象104随后可被加载以依照所包含的服务描述信息启动对应的通道。例如,通道对象104可用于实现服务描述信息中所描述的行为(例如,操作)和格式数据(例如,消息233和234)。
方法300包括启动与服务的行为和数据格式兼容的通道的动作(动作305)。例如,计算机系统101可从通道对象104启动通道105。通道105可以与服务运行库112的行为(例如,操作)和数据格式(例如,消息、头部、主体)兼容。
转换器134可包括用于在面向对象的参数和适当的消息格式(例如,包括XML指令的SOAP消息)之间进行转换并进行相反的转换的消息描述。例如,转换器134可从方法121接收输入参数122,可将输入参数122转换成适当的格式(例如,依照映射293),并可在消息131(SOAP消息)中包括已转换的输入参数122。服务112可以接收消息131,可处理消息131(例如,计算两个整数的和),并可返回消息132(SOAP消息)。
消息132可以是与消息131相同或相似的格式,并可包括一个或多个适当格式化的输出参数和/或返回值。转换器134可接收消息132,将适当格式化的输出参数和/或返回值转换成面向对象的参数和/或返回值,并向适当的方法提交面向对象的参数和/或返回值。例如,转换器134可提取适当格式化的面向对象的参数和/或返回值,转换成输出参数142和返回值126,并向方法123提交输出参数142和返回值126。
图4示出了用于本发明的原理的合适的操作环境。图4及以下讨论旨在提供对可在其中实现本发明的合适的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如程序模块等的由计算机系统执行的计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。计算机可执行指令、相关联的数据结构以及程序模块表示了用于执行此处所揭示的方法的步骤的程序代码装置的示例。
参考图4,用于实现本发明的示例系统包括计算机系统420形式的通用计算设备,包括处理单元421、系统存储器422以及将包括系统存储器422的各类系统组件耦合至处理单元421的系统总线423。处理单元421可以执行被设计成实现计算机系统420的特征,包括本发明的特征的计算机可执行指令。系统总线423可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器包括只读存储器(“ROM”)424和随机存取存储器(“RAM”)425。基本输入/输出系统(“BIOS”)426,包含如在启动时协助在计算机420内的元件之间传输信息的基本例程,可储存在ROM424中。
计算机系统420也可包括用于对磁硬盘439进行读写的磁硬盘驱动器427、用于对可移动磁盘429进行读写的磁盘驱动器428、以及用于对可移动光盘431如CD-ROM或其它光介质进行读写的光盘驱动器430。磁硬盘驱动器427、磁盘驱动器428以及光盘驱动器430分别通过硬盘驱动器接口432、磁盘驱动器接口433和光盘驱动器接口434连接至系统总线423。驱动器及其相关联的计算机可读介质为计算机420提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了磁硬盘439、可移动磁盘429以及可移动光盘431,然而也可以使用用于储存数据的其它类型的计算机可读介质,包括盒式磁带、闪存卡、数字多功能盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模块的程序代码装置可储存在硬盘439、磁盘429、光盘431、ROM424或RAM425中,包括操作系统435、一个或多个应用程序436、其它程序模块437以及程序数据438。用户可以通过键盘440、定点设备442或其它输入设备(未示出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等向计算机系统420输入命令和信息。这些和其它输入设备通常通过耦合至系统总线423的输入/输出接口446连接到处理单元421。输入/输出接口446逻辑上表示各种不同的接口中的任一种,诸如串行端口接口、PS/2接口、并行端口接口、通用串行总线(“USB”)接口、或电子和电气工程师协会(“IEEE”)1394接口(即,火线接口)、或甚至可逻辑上表示不同接口的组合。
监视器447或其它显示设备也通过视频适配器448连接到系统总线423。其它外围输出设备(未示出),如扬声器和打印机,也可被连接到计算机系统420。
计算机系统420可连接到网络,诸如办公室范围或企业范围计算机网络、家庭网络、内联网和/或因特网。计算机系统420可通过这样的网络与诸如远程计算机系统、远程应用程序和/或远程数据库等外部源交换数据。
计算机系统420包括网络接口453,通过该接口,计算机系统420从外部源接收数据和/或向外部源发送数据。如图4所示,网络接口453便于通过链路451与远程计算机系统483交换数据。网络接口453逻辑上可表示一个或多个软件和/或硬件模块,诸如网络接口卡和对应的网络驱动程序接口规范(“NDIS”)栈。链路451表示网络的一部分(例如,以太网段),而远程计算机系统483表示网络的一个节点。
同样,计算机系统420包括输入/输出接口446,通过该接口,计算机系统420可从外部源接收数据和/或向外部源发送数据。输入/输出接口446可通过链路459耦合到调制解调器454(例如,标准调制解调器、电缆调制解调器或数字订户线(“DSL”)调制解调器,通过该调制解调器,计算机系统420从外部源接收数据和/或向外部源发送数据。如图4所示,输入/输出接口446和调制解调器454便于通过链路452与远程计算机系统493交换数据。链路452表示网络的一部分,而远程计算机系统493表示网络的节点。
尽管图4表示用于本发明的合适的操作环境,然而,本发明的原理可以在能够在需要时以适当的修改来实现本发明的原理的任何系统中使用。图4所示的环境仅是说明性的,且决不是表示其中可实现本发明的原理的各种环境中的甚至一小部分。
依照本发明,包括类型加载器、通道和服务运行库、以及相关联的数据的模块可被储存在与计算机系统402相关联的计算机可读介质中,并可从其中访问,相关联的数据包括已注释的面向对象的表示、通道对象、面向服务的表示以及消息。例如,这些模块的各部分和相关联的程序数据的各部分可包括在操作系统435、应用程序436、程序模块437和/或程序数据438中,以储存在系统存储器422中。
当诸如磁硬盘439等大容量存储设备被耦合到计算机系统420时,这些模块和相关联的程序数据也可被储存在大容量存储设备中。在网络化环境中,相对于计算机系统420所描述的程序模块或其部分可储存在远程存储器存储设备中,诸如与远程计算机系统483和/或远程计算机系统493相关联的系统存储器和/或大容量存储设备。这些模块的执行可在如上所述的分布式环境中执行。
本发明可以用其它具体形式来实施,而不脱离其精神或本质特征。所描述的实施例在所有方面都只被认为是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非以上描述来指示。落入所附权利要求书的等效技术方案的意义和范围之内的所有改变都被包含在其范围之内。
权利要求
1.在计算机系统中,一种启动通道运行库的方法,所述方法包括访问服务的已注释的面向对象的表示的动作,所述已注释的面向对象的表示是用服务描述属性来注释的,所述服务描述属性将包括在所述面向对象的表示中的对象映射到所述服务的面向服务的表示中的对应的面向服务的元素;标识注释所述已注释的面向对象的表示的对象的服务描述属性的动作;依照所标识的服务描述属性中包含的服务描述信息将所述对象映射到对应的面向服务的元素的动作;输出被配置成实现所述面向服务的表示中所描述的行为和数据格式的通道对象的动作;以及启动与所述服务的行为和数据格式兼容的通道的动作。
2.如权利要求1所述的方法,其特征在于,访问服务的已注释的面向对象的表示的动作包括访问已注释的公共语言运行库类型的动作。
3.如权利要求1所述的方法,其特征在于,访问服务的已注释的面向对象的表示的动作包括访问被映射到所述面向服务的表示的行为的一个或多个对象的动作。
4.如权利要求1所述的方法,其特征在于,访问服务的已注释的面向对象的表示的动作包括访问被映射到所述面向服务的表示描述的数据格式的一个或多个对象的动作。
5.如权利要求1所述的方法,其特征在于,标识注释对象的服务描述属性的动作包括标识注释接口使得所述接口可被映射到地址、绑定和合约的一个或多个的服务合约属性的动作。
6.如权利要求1所述的方法,其特征在于,标识注释对象的服务描述属性的动作包括标识注释方法使得所述方法可被映射到操作的操作合约属性的动作。
7.如权利要求1所述的方法,其特征在于,标识注释对象的服务描述属性的动作包括标识注释参数使得所述参数可被映射到消息的消息合约属性的动作。
8.如权利要求1所述的方法,其特征在于,将所述对象映射到对应的面向服务的元素的动作包括将接口映射到地址、绑定和合约的一个或多个的动作。
9.如权利要求1所述的方法,其特征在于,将所述对象映射到对应的面向服务的元素的动作包括将方法映射到操作的动作。
10.如权利要求1所述的方法,其特征在于,将所述对象映射到对应的面向服务的元素的动作包括将输入参数、输出参数和返回值之一映射到消息的动作。
11.如权利要求1所述的方法,其特征在于,输出通道对象的动作包括以树格式输出服务描述信息的动作。
12.如权利要求1所述的方法,其特征在于,启动通道的动作包括配置所述通道以在面向对象的参数和对应的服务运行库的兼容消息格式之间进行转换的动作。
13.如权利要求12所述的方法,其特征在于,配置所述通道运行库以在面向对象的参数和对应的服务运行库的兼容消息格式之间进行转换的动作包括配置所述通道以在公共语言运行库参数和SOAP消息之间进行转换的动作。
14.一种在计算机系统中使用的计算机程序产品,所述计算机程序产品用于实现一种启动通道运行库的方法,所述计算机程序产品包括其上储存有计算机可执行指令的一个或多个计算机可读介质,当由处理器执行所述计算机可执行指令时,使所述计算机系统执行以下动作访问服务的已注释的面向对象的表示,所述已注释的面向对象的表示是用服务描述属性来注释的,所述服务描述属性将包括在所述面向对象的表示中的对象映射到所述服务的面向服务的表示中的对应的面向服务的元素;标识注释所述已注释的面向对象的表示的对象的服务描述属性;依照所标识的服务描述属性中包含的服务描述信息将所述对象映射到对应的面向服务的元素;输出被配置成实现所述面向服务的表示中所描述的行为和数据格式的通道对象;以及启动与所述服务的行为和数据格式兼容的通道。
15.如权利要求14所述的计算机程序产品,其特征在于,当被执行时使所述计算机系统访问服务的已注释的面向对象的表示的计算机可执行指令包括当被执行时使所述计算机系统访问被映射到所述面向服务的表示中所描述的行为的一个或多个对象的计算机可执行指令。
16.如权利要求14所述的计算机程序产品,其特征在于,当被执行时使所述计算机系统访问服务的已注释的面向对象的表示的计算机可执行指令包括当被执行时使所述计算机系统访问被映射到所述面向服务的表示中所描述的数据格式的一个或多个对象的计算机可执行指令。
17.如权利要求14所述的计算机程序产品,其特征在于,当被执行时使所述计算机系统标识注释所述已注释的面向对象的表示的对象的服务描述属性的计算机可执行指令包括当被执行时使所述计算机系统标识注释接口使得所述接口可被映射到地址、绑定和合约的一个或多个的服务合约属性的计算机可执行指令。
18.如权利要求14所述的计算机程序产品,其特征在于,当被执行时使所述计算机系统启动与所述服务的行为和数据格式兼容的通道的计算机可执行指令包括当被执行时使所述计算机系统配置所述通道以在公共语言运行库参数和SOAP消息之间进行转换的计算机可执行指令。
19.在计算机系统中,一种依照指定的编程模型交换消息的方法,所述方法包括标识注释服务的面向对象的表示中的对象的服务描述属性的动作;基于所述服务描述属性中包含的服务描述信息将所述已注释的对象映射到对应的面向服务的元素的动作;配置通道以实现所述服务描述信息中所描述的行为和格式数据的动作;所配置的通道将面向对象的参数转换成第一兼容SOAP消息用于传输到所述服务的动作;以及将所述第一兼容SOAP消息发送到所述服务的动作。
20.如权利要求19所述的方法,其特征在于,还包括所配置的通道在发送所述第一兼容消息之后从所述服务接收第二兼容SOAP消息的动作;以及将所述第二兼容SOAP消息转换成面向对象的参数的动作。
全文摘要
本发明涉及在分布式应用程序的面向对象和面向服务的表示之间的映射。计算机系统访问服务的已注释的面向对象的表示,它是用服务描述属性来注释的,服务描述属性将所包括的对象映射到该服务的面向服务的表示中对应的面向服务的元素。计算机系统标识注释该已注释的面向对象的表示的对象的服务描述属性。计算机系统依照所标识的服务描述属性中包含的服务描述信息将该对象映射到对应的面向服务的元素。计算机系统输出被配置成实现该面向服务的表示中所描述的行为和数据格式的通道对象。计算机系统启动与该服务的行为和数据格式兼容的通道。
文档编号G06F17/30GK1816049SQ20061000250
公开日2006年8月9日 申请日期2006年1月4日 优先权日2005年2月4日
发明者A·戴雅纳特, E·K·兹恩达, J·R·斯考高尔, M·J·马鲁切克, R·T·斯特戈尔, S·J·米尔雷特, S·T·斯瓦特兹 申请人:微软公司