一种远程服务的调用方法、装置及系统的制作方法

文档序号:6603293阅读:165来源:国知局
专利名称:一种远程服务的调用方法、装置及系统的制作方法
技术领域
本申请涉及互联网技术领域,尤其涉及一种远程服务的调用方法、装置及系统。
背景技术
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许运行于一台计算机的程序通过网络调用另一台远程计算机的程序,而不需要了解支持通信的网络协议。RPC协议假定某些传输协议的存在,例如TCP (Transmission Control Protocol, 传输控制协议)或UDP (User DatagramProtocol,用户数据报协议),为通信程序之间携带
信息数据。RPC采用C/S (Client/Server,客户端/服务器)模式,调用方为客户端,服务提供方为服务端。由客户端向服务端发送远程调用请求,并由客户端提供请求参数;当远程调用请求到达服务端之后,服务端获得请求参数,根据请求参数计算远程调用请求的执行结果, 执行结果将返回给客户端。WSDL(Web Services Description Language,Web 服务描述语言)是用于描述 Web 服务的公共接口,基于XML (Extensible Markup Language,可扩展标记)语言描述如何与 Web服务通信,即描述与目录中列出的Web服务进行通信时需要绑定的协议和信息格式。 WSDL文档由Web服务用来描述数据类型的一组元素、Web服务可以收到的“消息”以及关联每条消息的SOAP (SimpleObject Access Protocol,简单对象访问协议)绑定组成。基于 WSDL,客户端采用面向对象的方式进行远程服务的调用。现有技术中,客户端调用服务端的远程服务过程中,客户端需要持有服务端的存根,即需要生成特定的呼叫客户端,包括服务端远程接口、请求参数和响应信息。由于服务端的存根即特定的呼叫客户端是需要代码形式部署的,因此在运行期间无法动态改变远程服务的调用方法、请求参数和响应信息,假设服务端远程接口有变更,则需要停止客户端, 将新的存根(代码)部署在客户端,再重启客户端调用远程服务,导致客户端无法灵活调用远程服务。申请内容本申请实施例提供一种远程服务的调用方法及系统,用以解决远程服务的调用过程中,客户端需要持有服务端的存根,即需要生成特定的呼叫客户端,导致客户端无法灵活调用远程服务的问题。一方面,本申请实施例提供一种远程服务的调用方法,包括接收客户端发起的远程调用请求;根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;使用转换得到的请求数据调用服务端的远程服务;以及根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;
其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。另一方面,本申请实施例提供一种远程服务的调用装置,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元,用于接收客户端发起的远程调用请求;第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;调用单元,用于使用转换得到的请求数据调用服务端的远程服务;第二协议转换单元,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。另一方面,本申请实施例提供一种远程服务的调用方法,包括部署在客户端的客户端协议转换器接收客户端发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给部署在服务端的服务端协议转换器;所述服务端协议转换器接收所述转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器;所述客户端协议转换器接收所述服务端协议转换器发送的第二中间数据,根据配置的协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。另一方面,本申请实施例提供一种远程服务的调用系统,包括客户端和服务端,还包括部署在客户端的客户端协议转换器和部署在服务端的服务端协议转换器,其中所述客户端协议转换器,用于接收客户端发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给部署在服务端的服务端协议转换器,所述协议转换描述文件定义请求参数和执行结果的转换规则;以及,接收所述服务端协议转换器发送的第二中间数据,根据配置的协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;所述服务端协议转换器,用于接收所述转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及,根据配置的协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器。其中,客户端协议转换器的一种可能结构,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;第一接收单元,用于接收客户端发起的远程调用请求;第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给服务端协议转换器;第二接收单元,用于接收所述服务端协议转换器发送的采用调用系统支持的数据结构的第二中间数据;第二协议转换单元,用于根据所述协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。其中,服务端协议转换器的一种可能结构,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元,用于接收客户端协议转换器发送的远程调用请求;第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的采用调用系统支持的数据结构的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据;调用单元,用于使用转换得到的请求数据调用服务端的远程服务;第二协议转换单元,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器。本申请实施例提供的第一种远程服务的调用方法及装置,针对客户端需要的数据结构或服务端远程接口支持的数据结构与调用系统支持的数据结构相一致的应用场景,通过在客户端或服务端配置的协议转换描述文件,能够确保客户端即调用方的请求参数转换为服务端即服务提供方远程接口支持的请求数据,服务提供方的执行结果转换为调用方需要的响应信息,由此客户端无需持有服务端的存根即无需生成特定的呼叫客户端,从而实现客户端对远程服务的灵活调用。本申请实施例提供的第二种远程服务的调用方法、装置及系统,针对客户端需要的数据结构和服务端远程接口支持的数据结构均与调用系统支持的数据结构不一致的应用场景,通过在客户端部署客户端协议转换器,在服务端部署服务端协议转换器,并且在协议转换器中配置协议转换描述文件,能够确保客户端即调用方的请求参数转换为服务端即服务提供方远程接口支持的请求数据,服务提供方的执行结果转换为调用方需要的响应信息,并且在网络中传输的为采用调用系统支持的数据结构的中间数据,由此客户端无需持有服务端的存根即无需生成特定的呼叫客户端,从而实现客户端对远程服务的灵活调用。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。


图1为本申请实施例一中远程服务的调用系统框图2为本申请实施图3为本申请实施图4为本申请实施图5为本申请实施图6为本申请实施图7为本申请实施图8为本申请实施
中客户端协议转换器的可能结构框图; 中服务端协议转换器的可能结构框图; 中远程服务的调用方法流程图; 中远程服务的调用方法流程图; 中远程服务的调用装置框中部署服务端协议转换器的远程服务的调用系统框图; 中部署服务端协议转换器的远程服务的调用方法流程图。
具体实施例方式本申请实施例提供一种远程服务的调用方法、装置及系统,用以解决远程服务的调用过程中,客户端需要持有服务端的存根,即需要生成特定的呼叫客户端,导致客户端无法灵活调用远程服务的问题。以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例一本申请实施例一针对的具体应用场景为客户端需要的数据结构和服务端远程接口支持的数据结构均与远程服务的调用系统支持的数据结构不一致,需要在客户端和服务端分别进行协议转换。本申请实施例一首先提供一种远程服务的调用系统,如图1所示,在客户端101部署客户端协议转换器103,在服务端102部署服务端协议转换器104,并且,客户端协议转换器103和服务端协议转换器104中配置有协议转换描述文件。协议转换描述文件的基本功能包括定义请求参数和执行结果的转换规则,进一步协议转换描述文件还可以定义远程服务的位置信息,例如远程服务的服务名称、版本号等。其中客户端协议转换器103,用于接收客户端101发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给服务端协议转换器104 ;以及,接收服务端协议转换器104发送的第二中间数据,根据配置的协议转换描述文件将该第二中间数据转换为采用客户端101需要的数据结构的响应信息并发送给客户端101 ;服务端协议转换器104,用于接收转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的采用调用系统支持的数据结构的第一中间数据转换为服务端102远程接口支持的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及,根据配置的协议转换描述文件将服务端102对远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给客户端协议转换器103。具体实施中,协议转换描述文件可以预先通过人工方式配置给客户端协议转换器 103和服务端协议转换器104,也可以通过专门的网络实体配置给客户端协议转换器103 和服务端协议转换器104,本申请实施例一中,该专门的网络实体可以称为描述文件注册中心,其可以是具有数据处理能力的服务器或其他设备。基于此,本申请实施例一提供的远程服务的调用系统,还包括描述文件注册中心105,用于将协议转换描述文件配置给客户端协议转换器103 和服务端协议转换器104。如果协议转换描述文件由描述文件注册中心105配置给客户端协议转换器103和服务端协议转换器104,在该系统结构下,可以通过动态更改协议转换描述文件的方式,实现在运行期间动态改变远程服务的调用方法、请求参数和响应信息的目的,而无需停机维护。具体实施中,可以采用多种方式实现客户端协议转换器和服务端协议转换器对本地配置的协议转换描述文件的更新,本申请实施例中介绍两种较佳的实现方式。方式一、协议转换器主动获取方式描述文件注册中心105,在本地存储的协议转换描述文件有变更时向客户端协议转换器103和服务端协议转换器104发送更新通知;以及,客户端协议转换器103和服务端协议转换器104,根据该更新通知从描述文件注册中心105处获取变更后的协议转换描述文件,使用获取的协议转换描述文件对配置的协议转换描述文件进行更新。方式二、描述文件注册中心主动推送方式描述文件注册中心105,在本地存储的协议转换描述文件有变更时发送变更后的协议转换描述文件;以及,客户端协议转换器103和服务端协议转换器104,接收描述文件注册中心105发送的变更后的协议转换描述文件,并使用接收的变更后的协议转换描述文件对配置的协议转换描述文件进行更新。其中,客户端协议转换器的一种可能结构,如图2所示,包括存储单元201,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;第一接收单元202,用于接收客户端发起的远程调用请求;第一协议转换单元203,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给服务端协议转换器;第二接收单元204,用于接收所述服务端协议转换器发送的采用调用系统支持的数据结构的第二中间数据;第二协议转换单元205,用于根据所述协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。具体实施中,所述协议转换描述文件由描述文件注册中心配置;以及客户端协议转换器还可包括第一更新单元206,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知, 从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元201中存储的协议转换描述文件进行更新;或者,第二更新单元207,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元201中存储的协议转换描述文件进行更新。需要说明的是,第一更新单元206和第二更新单元207并不是同时存在于客户端协议转换器中,只是两种不同的具体实施方式
。也就是说,如果第一更新单元206存在于客户端协议转换器中,则客户端协议转换器中不存在第二更新单元207;反之,如果第二更新单元207存在于客户端协议转换器中,则客户端协议转换器中不存在第一更新单元206。其中,服务端协议转换器的一种可能结构,如图3所示,包括存储单元301,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元302,用于接收客户端协议转换器发送的远程调用请求;第一协议转换单元303,用于根据存储的协议转换描述文件将接收的远程调用请求携带的采用调用系统支持的数据结构的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据;调用单元304,用于使用转换得到的请求数据调用服务端的远程服务;第二协议转换单元305,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器。具体实施中,所述协议转换描述文件由描述文件注册中心配置;以及服务端协议转换器还可包括第一更新单元306,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知, 从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元301中存储的协议转换描述文件进行更新;或者,第二更新单元307,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元301中存储的协议转换描述文件进行更新。同理,第一更新单元306和第二更新单元307并不是同时存在于服务端协议转换器中,只是两种不同的具体实施方式
。基于上述远程服务的调用系统的架构,本申请实施例一提供了一种远程服务的调用方法,如图4所示,包括S401、客户端发起携带请求参数的远程调用请求;S402、部署在客户端的客户端协议转换器接收客户端发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据;例如在采用Java语言编制的远程服务的调用系统中,客户端协议转换器可以将客户端请求的业务对象参数可以转换为采用调用系统支持的哈希表结构的哈希对象;S403、客户端协议转换器将转换后的远程调用请求发送给服务端协议转换器;S404、服务端协议转换器接收该转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的第一中间数据转换为采用服务端远程接口支持的数
11据结构的请求数据;例如在上述采用Java语言编制的远程服务的调用系统中,服务端协议转换器将哈希对象转换为采用服务端远程接口支持的链表结构的请求数据;S405、服务端协议转换器使用转换得到的请求数据调用服务端的远程服务;S406、服务端获得请求数据,根据请求数据计算并返回远程调用请求的执行结果;S407、服务端协议转换器根据协议转换描述文件将服务端对远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给客户端协议转换器;例如在上述采用Java语言编制的远程服务的调用系统中,服务端协议转换器将服务端的执行结果转换为采用调用系统支持的哈希表结构的哈希对象;S408、客户端协议转换器接收服务端协议转换器发送的第二中间数据,根据配置的协议转换描述文件将第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给客户端;例如在上述采用Java语言编制的远程服务的调用系统中,客户端协议转换器将哈希对象转换为客户端需要的业务对象。通过上述远程服务的调用流程,客户端最终可以基于发起的远程调用请求,获得需要的响应信息,从而实现了对远程服务的灵活调用。举例说明远程服务的调用过程。假设在采用Java语言编制的远程服务的调用系统中,服务端提供了一个服务接口 Math,且通过程序提供实现方法intadcKint a, int b), 即对两个整型数据求和的实现方法,服务端远程接口支持的数据结构为int(int表示整型);而客户端希望服务端提供的实现方法为Mringadd (String a, String b),服务端需要的数据结构为Mring(String表示字符串型),客户端发起的请求参数为字符串型的a数值和b数值,需要的响应信息为字符串型的(a+b)数值。需要在客户端和服务端分别部署配置有协议转换描述文件的协议转换器,比较特殊的是,客户端和服务端配置的协议转换描述文件相同,代码如下〈method interfaceName = “ Math" ><methodCall name = 〃 add" ><params><param type =<param type =</params></methodCall><methodResponse><param clientType =" s tring" /></methodResponse>〈/method〉其中,methodCall部分描述客户端的请求参数如何转换为采用服务端远程接口支持的数据结构的请求数据;methodResponse部分描述服务端的执行结果如何转换为采用客户端需要的数据结构的响应信息。
//
int" clientName = “ a" /> int" clientName = “ b" />
客户端通过调用远程服务获得String invokeResult = add( “3”,“5”)的执行结果,远程服务的调用过程具体包括如下步骤步骤1、客户端发起远程调用请求,请求参数为字符串型数据“ 3 ”、“ 5 ” ;步骤2、客户端协议转换器根据配置的协议转换描述文件将请求参数转换为采用调用系统支持的数据结构的第一中间数据后发送数据包,例如远程服务的调用系统采用 Java语言编制,则调用系统支持的数据结构包括MAP数据结构,客户端协议转换器根据配置的协议转换描述文件将请求参数转换为MAP对象,即Map { “a”“3”,“b”“5”};步骤3、客户端协议转换器接收到数据包后,根据配置的协议转换描述文件将第一中间数据转换为采用服务端远程结构支持的数据结构的请求数据,即将MAP对象转换为整型数据“3”、“5”;步骤4、服务端获得请求数据,根据请求数据计算int add(int a, int b)并返回远程调用请求的执行结果即整型数据“8” ;步骤5、服务端协议转换器根据配置的协议转换描述文件将执行结果转换为采用调用系统支持的数据结构的第二中间数据,第二中间数据例如为MAP对象,即Map{ “8”};步骤6、客户端协议转换器根据配置的协议转换描述文件将第二中间数据转换为采用客户端需要的数据结构的响应信息,即字符串型数据“8”;步骤7、客户端接收到字符串型数据“8”之后,赋值给invokeResult,调用过程完成。具体实施中,可以由描述文件注册中心将本地存储的协议转换描述文件配置给客户端协议转换器和服务端协议转换器,实现在运行期间动态改变远程服务的调用方法、请求参数和响应信息的目的,而无需停机维护。在此基础上,介绍客户端协议转换器和服务端协议转换器对配置的协议转换描述文件进行更新的实现方法。第一种实现方法包括如下步骤步骤Al、描述文件注册中心在本地存储的协议转换描述文件有变更时向客户端协议转换器和服务端协议转换器发送更新通知;具体实施中,可以通过人工设置的方式使描述文件注册中心本地存储的协议转换描述文件发生变更;步骤A2、客户端协议转换器和服务端协议转换器接收描述文件注册中心发来的更新通知;步骤A3、客户端协议转换器和服务端协议转换器根据该更新通知从描述文件注册中心处获取变更后的协议转换描述文件,使用获取的协议转换描述文件对配置的协议转换描述文件进行更新。第二种实现方法中,需要客户端协议转换器和服务端协议转换器与描述文件注册中心建立连接,为了达到及时更新协议转换描述文件的目的,较佳的,客户端协议转换器和服务端协议转换器与描述文件注册中心建立长连接。第二种实现方法包括如下步骤步骤Bi、描述文件注册中心在本地存储的协议转换描述文件有变更时发送变更后的协议转换描述文件;步骤B2、客户端协议转换器和服务端协议转换器使用接收的变更后的协议转换描述文件对配置的协议转换描述文件进行更新。
需要说明的是,客户端协议转换器和服务端协议转换器通过对更新后的协议转换描述文件进行解析,即生成新的协议转换规则。本申请实施例一提供的远程服务的调用系统及方法,针对客户端需要的数据结构和服务端远程接口支持的数据结构均与调用系统支持的数据结构不一致的应用场景,通过在客户端部署客户端协议转换器,在服务端部署服务端协议转换器,并且在协议转换器中配置协议转换描述文件,能够确保客户端即调用方的请求参数转换为服务端即服务提供方远程接口支持的请求数据,服务提供方的执行结果转换为调用方需要的响应信息,并且在网络中传输的为采用调用系统支持的数据结构的中间数据,由此客户端无需持有服务端的存根即无需生成特定的呼叫客户端,从而实现客户端对远程服务的灵活调用。实施例二、本申请实施例二针对的具体应用场景为客户端需要的数据结构或服务端远程接口支持的数据结构与远程服务的调用系统支持的数据结构相一致,相应的,无需在客户端或服务端进行协议转换。如果客户端需要的数据结构与调用系统支持的数据结构相一致, 例如在采用Java语言编制的远程服务的调用系统中,客户端需要的数据结构为Map数据结构,而Map数据结构为Java语言描述的数据结构,因此在客户端无需进行协议转换;同理, 如果服务端远程接口支持的数据结构与调用系统支持的数据结构相一致,例如在采用Java 语言编制的远程服务的调用系统中,服务端远程接口支持的数据结构为Map数据结构,而 Map数据结构为Java语言描述的数据结构,因此在服务端无需进行协议转换。本申请实施例二首先提供一种远程服务的调用方法,如图5所示,包括S501、接收客户端发起的远程调用请求;S502、根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;S503、使用转换得到的请求数据调用服务端的远程服务;S504、根据配置的协议转换描述文件将服务端对远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给客户端;其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。具体实施中,所述协议转换描述文件由描述文件注册中心配置。该远程服务的调用方法还包括对配置的协议转换描述文件进行更新的步骤。一种可能的更新流程,具体包括如下步骤步骤Cl、接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;步骤C2、根据该更新通知,从描述文件注册中心处获取变更后的协议转换描述文件;步骤C3、使用获取的协议转换描述文件对配置的协议转换描述文件进行更新。另一种可能的更新流程,具体包括如下步骤步骤D1、接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及步骤D2、使用接收的变更后的协议转换描述文件对配置的协议转换描述文件进行更新。
具体实施中,协议转换描述文件还可定义远程服务的位置信息,所述位置信息包括服务名称和版本号。基于同一技术构思,本申请实施例二提供了一种远程服务的调用装置,如图6所示,包括存储单元601,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元602,用于接收客户端发起的远程调用请求;第一协议转换单元603,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;调用单元604,用于使用转换得到的请求数据调用服务端的远程服务;第二协议转换单元605,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。具体实施中,所述协议转换描述文件由描述文件注册中心配置;以及所述调用装置还可包括第一更新单元606,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知, 从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元601中存储的协议转换描述文件进行更新;或者,第二更新单元607,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元601中存储的协议转换描述文件进行更新。需要说明的是,第一更新单元606和第二更新单元607并不是同时存在于远程服务的调用装置中,只是两种不同的具体实施方式
。也就是说,如果第一更新单元606存在于远程服务的调用装置中,则远程服务的调用装置中不存在第二更新单元607;反之,如果第二更新单元607存在于远程服务的调用装置中,则远程服务的调用装置中不存在第一更新单元606。具体实施中,上述远程服务的调用装置可以部署在服务端,如果部署在服务端,相应的该远程服务的调用装置可以称为服务端协议转换器;上述远程服务的调用装置也可以部署在客户端,如果部署在客户端,相应的该远程服务的调用装置可以称为服务端协议转换器。下面,以该远程服务的调用装置部署在服务端为例进行说明,针对部署在客户端的应用场景不再赘述。如图7所示,远程服务的调用系统包括客户端701、服务端702、以及在服务端702 部署的服务端协议转换器703,服务端协议转换器703中配置有协议转换描述文件。协议转换描述文件的基本功能为定义请求参数和执行结果的转换规则,进一步协议转换描述文件还可以定义远程服务的位置信息,例如远程服务的服务名称、版本号等。其中服务端协议转换器703,用于接收客户端701发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及,根据配置的协议转换描述文件将服务端702对远程调用请求的执行结果转换为为采用客户端需要的数据结构的响应信息,并发送给客户端701。具体实施中,协议转换描述文件可以预先通过人工方式配置给服务端协议转换器 703,也可以通过专门的网络实体配置给服务端协议转换器703,本申请实施例二中,该专门的网络实体可以称为描述文件注册中心。基于此,本申请实施例二提供的远程服务的调用系统,还包括描述文件注册中心704,用于将协议转换描述文件配置给服务端协议转换器703。基于上述远程服务的调用系统的架构,相应的,远程服务的调用方法,如图8所示,包括S801、客户端发起远程调用请求;例如在采用Java语言编制的远程服务的调用系统中,请求参数可以为Map对象;S802、服务端协议转换器接收客户端发送的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;例如在上述采用Java语言编制的远程服务的调用系统中,将Map对象转换为采用服务端远程接口支持的链表结构的请求数据;S803、服务端协议转换器使用转换得到的请求数据调用服务端的远程服务;S804、服务端获得请求数据,根据请求数据计算并返回远程调用请求的执行结果;S805、服务端协议转换器根据配置的协议转换描述文件将服务端对远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息;例如在上述采用Java语言编制的远程服务的调用系统中,将服务端的执行结果转换为客户端需要的Map对象;S806、服务端协议转换器将转换得到的响应信息发送给客户端。通过上述调用流程,客户端最终可以基于发起的远程调用请求,获得需要的响应信息,从而实现了对远程服务的灵活调用。对协议转换描述文件进行简单介绍。举例说明在服务端部署的协议转换描述文件,其代码如下< ? xml version = “ 1.0〃 encoding = “ UTF-8" ? ><method xmlns = “ http://apimapping.taobao.com"xmlns :xsi=〃 http://www.w3.org/2001/XMLSchema-instance"xsi :schemaLocation = " http://apimapping.taobao.comhttp: //apimapping. taobao. com/apimapping. xsd〃interfaceName = " com. taobao. album. AlbumService"interfaceVersion = " 1.0.0〃 ><methodCall name = " addAlbum" ><params>
<param>〈type class = 〃 com. taobao. album. SimplePojo 〃 ><struct>〈member name =" stringMember"clientName =" string—member" type =" string" />〈member name 二" booleanMember"clientName =〃 boolean—member〃 type =〃 boolean“ />〈member name =" intMember" clientName =" int member"type=" int" />〈member name 二" IongMember"clientName =" long—member" type =" long" />〈member name 二" byteMember"clientName=" byte—member" type=" byte" />〈member name 二" shortMember"clientName =" short—member" type =" short" />〈member name 二" fIoatMember "clientName=" float—member" type=" float" />〈member name 二" doubleMember"clientName =" double—member" type =" double" />〈member name 二" charMember"clientName =” char—member" type =” char“ />〈member name 二" dateMember"clientName = “ date—member" type = “ java. util. Date" /></struct>〈/type〉</param></params>〈/methodCall〉<methodResponse><param>〈type〉<struct>〈member name =" stringMember"clientName =" string—member" clientType =" string" />〈member name =" booleanMember"clientName =〃 boolean—member〃 clientType =〃 boolean“ />〈member name =〃 intMember" clientName =〃 int—member"clientType=" int" />
〈member name = “ IongMember “ clientName = “ long member"clientType= 〃 long" />〈member name = " byteMember " clientName = " byte member"clientType = " byte" />〈member name = " shortMember" clientName = " byte member"clientType =" short" />〈member name =" fIoatMember" clientName = " float member"clientType =" float" />〈member name = " doubIeMember"clientName = " double_member〃 clientType = " double" />〈member name = " charMember " clientName = " char member"clientType =" char" />〈member name = " dateMember " clientName = " date_ member"clientType =" string" /></struct></type></param></methodResponse>〈/method〉其中,methodCall部分描述客户端的请求参数如何转换为采用服务端远程接口支持的数据结构的请求数据;methodResponse部分描述服务端的执行结果如何转换为采用客户端需要的数据结构的响应信息;clientName表示客户端对应的对象名称。该协议转换描述文件表示客户端发送Java语言描述的数据结构即Map对象,服务端协议转换器根据配置的协议转换描述文件将Map对象转换为采用服务端远程接口支持的数据结构的请求数据,其数据结构为com. taobao. album. SimplePojo ;同理,服务端的执行结果转换为客户端需要的Map对象。本申请实施例二提供的远程服务的调用系统及方法,针对客户端需要的数据结构或服务端远程接口支持的数据结构与调用系统支持的数据结构相一致的应用场景,通过在客户端或服务端配置的协议转换描述文件,能够确保客户端即调用方的请求参数转换为服务端即服务提供方远程接口支持的请求数据,服务提供方的执行结果转换为调用方需要的响应信息,由此客户端无需持有服务端的存根即无需生成特定的呼叫客户端,从而实现客户端对远程服务的灵活调用。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精
18神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
权利要求
1.一种远程服务的调用方法,其特征在于,包括 接收客户端发起的远程调用请求;根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;使用转换得到的请求数据调用服务端的远程服务;以及根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。
2.如权利要求1所述的调用方法,其特征在于,所述协议转换描述文件由描述文件注册中心配置。
3.如权利要求2所述的调用方法,其特征在于,还包括对配置的协议转换描述文件进行更新的步骤,具体包括接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知,从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对配置的协议转换描述文件进行更新。
4.如权利要求2所述的调用方法,其特征在于,还包括对配置的协议转换描述文件进行更新的步骤,具体包括接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对配置的协议转换描述文件进行更新。
5.如权利要求1、2或3所述的调用方法,其特征在于,所述协议转换描述文件还定义远程服务的位置信息,所述位置信息包括服务名称和版本号。
6.一种远程服务的调用装置,其特征在于,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元,用于接收客户端发起的远程调用请求;第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据; 调用单元,用于使用转换得到的请求数据调用服务端的远程服务; 第二协议转换单元,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。
7.如权利要求6所述的调用装置,其特征在于,所述协议转换描述文件由描述文件注册中心配置;以及所述调用装置还包括第一更新单元,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知,从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新;或者,第二更新单元,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新。
8.—种远程服务的调用方法,其特征在于,包括部署在客户端的客户端协议转换器接收客户端发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给部署在服务端的服务端协议转换器;所述服务端协议转换器接收所述转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器;所述客户端协议转换器接收所述服务端协议转换器发送的第二中间数据,根据配置的协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。
9.一种远程服务的调用系统,包括客户端和服务端,其特征在于,还包括部署在客户端的客户端协议转换器和部署在服务端的服务端协议转换器,其中所述客户端协议转换器,用于接收客户端发起的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给部署在服务端的服务端协议转换器,所述协议转换描述文件定义请求参数和执行结果的转换规则;以及,接收所述服务端协议转换器发送的第二中间数据,根据配置的协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;所述服务端协议转换器,用于接收所述转换后的远程调用请求,根据配置的协议转换描述文件将接收的远程调用请求携带的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据,并使用转换得到的请求数据调用服务端的远程服务;以及,根据配置的协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器。
10.如权利要求9所述的调用系统,其特征在于,还包括描述文件注册中心,用于将协议转换描述文件配置给所述客户端协议转换器和服务端协议转换器。
11.如权利要求10所述的调用系统,其特征在于,所述描述文件注册中心,还用于在本地存储的协议转换描述文件有变更时向客户端协议转换器和服务端协议转换器发送更新通知;以及所述客户端协议转换器和服务端协议转换器,还用于接收所述描述文件注册中心发来的更新通知,根据所述更新通知从所述描述文件注册中心处获取变更后的协议转换描述文件,使用获取的协议转换描述文件对配置的协议转换描述文件进行更新。
12.如权利要求10所述的调用系统,其特征在于,所述描述文件注册中心,还用于在本地存储的协议转换描述文件有变更时发送变更后的协议转换描述文件;以及所述客户端协议转换器和服务端协议转换器,还用于接收所述描述文件注册中心发送的变更后的协议转换描述文件,并使用接收的变更后的协议转换描述文件对配置的协议转换描述文件进行更新。
13.一种客户端协议转换器,其特征在于,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;第一接收单元,用于接收客户端发起的远程调用请求;第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用调用系统支持的数据结构的第一中间数据,并将转换后的远程调用请求发送给服务端协议转换器;第二接收单元,用于接收所述服务端协议转换器发送的采用调用系统支持的数据结构的第二中间数据;第二协议转换单元,用于根据所述协议转换描述文件将所述第二中间数据转换为采用客户端需要的数据结构的响应信息并发送给所述客户端。
14.如权利要求13所述的客户端协议转换器,其特征在于,所述协议转换描述文件由描述文件注册中心配置;以及所述客户端协议转换器还包括第一更新单元,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知,从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新; 或者,第二更新单元,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新。
15.一种服务端协议转换器,其特征在于,包括存储单元,用于存储配置的协议转换描述文件,其中,所述协议转换描述文件定义请求参数和执行结果的转换规则;接收单元,用于接收客户端协议转换器发送的远程调用请求; 第一协议转换单元,用于根据存储的协议转换描述文件将接收的远程调用请求携带的采用调用系统支持的数据结构的第一中间数据转换为采用服务端远程接口支持的数据结构的请求数据;调用单元,用于使用转换得到的请求数据调用服务端的远程服务; 第二协议转换单元,用于根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用调用系统支持的数据结构的第二中间数据,并发送给所述客户端协议转换器。
16.如权利要求15所述的服务端协议转换器,其特征在于,所述协议转换描述文件由描述文件注册中心配置;以及所述服务端协议转换器还包括第一更新单元,用于接收描述文件注册中心发来的更新通知,所述更新通知是描述文件注册中心在本地存储的协议转换描述文件有变更时发送的;根据所述更新通知,从所述描述文件注册中心处获取变更后的协议转换描述文件;并使用获取的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新;或者,第二更新单元,用于接收所述描述文件注册中心在本地存储的协议转换描述文件有变更时发送的变更后的协议转换描述文件;以及使用接收的变更后的协议转换描述文件对存储单元中存储的协议转换描述文件进行更新。
全文摘要
本申请公开了一种远程服务的调用方法、装置及系统,用以解决远程服务的调用过程中,客户端需要持有服务端的存根,导致客户端无法灵活调用远程服务的问题。远程服务的调用方法,包括接收客户端发起的远程调用请求;根据配置的协议转换描述文件将接收的远程调用请求携带的请求参数转换为采用服务端远程接口支持的数据结构的请求数据;使用转换得到的请求数据调用服务端的远程服务;以及根据所述协议转换描述文件将服务端对所述远程调用请求的执行结果转换为采用客户端需要的数据结构的响应信息并发送给所述客户端;其中,所述协议转换描述文件定义请求参数和执行结果的转换规则。
文档编号G06F9/46GK102262560SQ20101018746
公开日2011年11月30日 申请日期2010年5月27日 优先权日2010年5月27日
发明者王霖 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1