远程过程调用方法和装置与流程

文档序号:11261869阅读:491来源:国知局
远程过程调用方法和装置与流程

本申请涉及计算机技术领域,具体涉及网络技术领域,尤其涉及远程过程调用方法和装置。



背景技术:

过程调用,就是将控制从一个过程a传递到另一个过程b,返回时过程b将控制进程交给过程a。当调用者和被调用者都在给定主机系统中的一个进程中,它们是在生成可执行文件时由链接器连接起来的,这类过程调用称为本地过程调用。远程过程调用(rpc,remoteprocedurecall)指的是由本地系统上的进程激活远程系统上的进程。

然而,现有的rpc方案中,在使用接口调用远程服务时,每个接口都对应一个idl(interfacedescriptionlanguage,接口描述语言)。在每次跨语言调用时,必须通过对应idl解析出每个语言自己的格式,有多少个接口就必须生成多少个idl。因此,现有的远程过程调用方案中idl的维护较为复杂,有必要提高远程过程调用时程序的灵活性。



技术实现要素:

本申请的目的在于提出一种改进的远程过程调用方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种远程过程调用方法,所述方法包括:接收服务调用设备通过调用泛化接口发送的调用信息,其中所述调用信息包括服务调用设备调用泛化接口时传入的参数,所述参数包括对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;解析所述第一对象,以获取所述服务标识以及所述请求参数;按照所述请求参数执行所述服务标识指示的服务。

在一些实施例中,所述方法还包括:将执行所述服务的执行状态 和/或执行结果封装为第二对象;将所述第二对象作为所述泛化接口的返回值返回至所述服务调用设备,以使所述服务调用设备对接收到的第二对象进行解析以获得所述结果数据。

在一些实施例中,所述方法还包括:将执行服务过程所产生异常的异常描述信息和/或异常代码封装为第三对象;将所述第三对象作为所述泛化接口的异常对象返回至所述服务调用设备,以使所述服务调用设备对接收到的异常对象进行解析以获得所述异常描述信息和/或异常代码。

在一些实施例中,所述解析所述第一对象,以获取所述服务标识以及所述请求参数,包括:通过反射机制从所述第一对象中获取所述服务标识以及所述请求参数。

第二方面,本申请提供了又一种远程过程调用方法,所述方法包括:通过调用泛化接口向服务提供设备发送调用信息,所述调用信息包括调用泛化接口时传递的参数,其中所述参数包括:对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;接收所述服务提供设备作为所述泛化接口的返回值所返回的第二对象,其中,所述服务提供设备是在解析所述第一对象以获取所述服务标识以及所述请求参数并按照所述请求参数执行所述服务标识指示的服务后、将执行所述服务的执行状态和/或执行结果封装为所述第二对象;解析所述第二对象以获得所述服务的执行状态和/或执行结果。

在一些实施例中,所述方法还包括:接收所述服务提供设备作为所述泛化接口的异常对象所返回的第三对象,其中,所述第三对象是所述服务提供设备将执行服务过程所产生异常的异常描述信息和/或异常代码进行封装而形成的;解析所述第三对象以获得所述异常描述信息和/或异常代码。

第三方面,本申请提供了一种远程过程调用装置,所述装置包括:接收单元,用于接收服务调用设备通过调用泛化接口发送的调用信息,其中所述调用信息包括服务调用设备调用泛化接口时传入的参数,所述参数包括对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;解析单元,用于解析所述第一对象,以获 取所述服务标识以及所述请求参数;执行单元,用于按照所述请求参数执行所述服务标识指示的服务。

在一些实施例中,所述装置还包括:第一封装单元,用于将执行所述服务的执行状态和/或执行结果封装为第二对象;第一返回单元,用于将所述第二对象作为所述泛化接口的返回值返回至所述服务调用设备,以使所述服务调用设备对接收到的第二对象进行解析以获得所述结果数据。

在一些实施例中,所述装置还包括:第二封装单元,用于将执行服务过程所产生异常的异常描述信息和/或异常代码封装为第三对象;第二返回单元,用于将所述第三对象作为所述泛化接口的异常对象返回至所述服务调用设备,以使所述服务调用设备对接收到的异常对象进行解析以获得所述异常描述信息和/或异常代码。

在一些实施例中,所述解析单元进一步用于:通过反射机制从所述第一对象中获取所述服务标识以及所述请求参数。

第四方面,本申请提供了又一种远程过程调用装置,所述装置包括:发送单元,用于通过调用泛化接口向服务提供设备发送调用信息,所述调用信息包括调用泛化接口时传递的参数,其中所述参数包括:对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;第一接收单元,接收所述服务提供设备作为所述泛化接口的返回值所返回的第二对象,其中,所述服务提供设备是在解析所述第一对象以获取所述服务标识以及所述请求参数并按照所述请求参数执行所述服务标识指示的服务后、将执行所述服务的执行状态和/或执行结果封装为所述第二对象;第一解析单元,用于解析所述第二对象以获得所述服务的执行状态和/或执行结果。

在一些实施例中,所述装置还包括:第二接收单元,用于接收所述服务提供设备作为所述泛化接口的异常对象所返回的第三对象,其中,所述第三对象是所述服务提供设备将执行服务过程所产生异常的异常描述信息和/或异常代码进行封装而形成的;第二解析单元,用于解析所述第三对象以获得所述异常描述信息和/或异常代码。

本申请提供的远程过程调用方法和装置,通过泛化接口发送调用 信息服务且将所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象后作为调用泛化接口时所使用的参数。此时只编译生成一个idl,减少了需要维护的内容,且减少了所调用的服务变化对rpc跨语言调用的影响。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的远程过程调用方法的一个实施例的流程图;

图3是根据本申请的远程过程调用方法的又一个实施例的流程图;

图4是根据本申请的远程过程调用装置的一个实施例的结构示意图;

图5是根据本申请的远程过程调用装置的又一个实施例的结构示意图;

图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的远程过程调用方法和装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括服务调用设备101,网络102 和服务提供设备103。网络102用以在服务调用设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

服务调用设备101可以通过网络102向服务提供设备103交互,以接收或发送消息等。

服务提供设备103可以是提供各种服务的服务器,其可以对服务调用设备101发送的调用信息等数据进行处理,并将处理结果后的数据反馈给服务调用设备101。

需要说明的是,本申请图2对应实施例所提供的远程过程调用方法一般由服务提供设备103执行,相应地,图4所提供的远程过程调用装置一般设置于服务提供设备103中。本申请图3对应实施例所提供的远程过程调用方法一般由服务调用设备101执行,相应地,图5所提供的远程过程调用装置一般设置于服务调用设备101中。

应该理解,图1中的服务调用设备、网络和服务提供设备的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务调用设备、网络和服务提供设备。需要说明的是,上述服务调用设备和服务调用设备可以是各种电子设备,例如服务器、终端等。

继续参考图2,示出了根据本申请的远程过程调用方法的一个实施例的流程200。所述的远程过程调用方法,包括以下步骤:

步骤201,接收服务调用设备通过调用泛化接口发送的调用信息。

在本实施例中,远程过程调用方法运行于其上的电子设备(例如图1所示的服务提供设备)可以通过有线连接方式或者无线连接方式从服务调用设备处接收调用信息。其中,服务调用设备可以通过调用电子设备所提供的泛化接口向电子设备发出上述调用信息。其中,上述泛化接口可以是一种泛化的接口,对每种服务进行远程的调用都可以使用该泛化接口进行。

电子设备调用泛化接口发送的调用信息,可以将调用信息作为调用泛化接口时的入口参数。该入口参数(即调用信息)可以是对服务标识和调用服务所使用的请求参数进行封装而形成的第一对象作为调 用泛化接口时所使用的参数,这样,所发送的调用信息即可以包括该参数。在将对服务标识和调用服务所使用的请求参数进行封装而形成第一对象时,服务标识和请求参数可以作为该第一对象的属性。需要说明的是,上述服务标识是实际调用接口的接口标识,相应的,请求参数即为调用上述实际调用接口所需要使用的参数。需要说明的是,服务标识可以使用字符串表示,请求参数可以使用序列化后的数据。此外,第一对象可以是结构体实例化形成的对象,也可以是类实例化形成的对象。

需要指出的是,上述无线连接方式可以包括但不限于3g/4g连接、wifi连接、蓝牙连接、wimax连接、zigbee连接、uwb(ultrawideband)连接、以及其他现在已知或将来开发的无线连接方式。

步骤202,解析第一对象,以获取服务标识以及请求参数。

在本实施例中,基于步骤201中得到的调用信息,电子设备可以从调用信息中获取服务调用设备调用泛化接口时传入的参数,即上述第一对象。由于上述第一对象中对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的,因此,电子设备可以解析该第一对象,从而获取作为该第一对象的成员的服务标识和请求参数。可选的,上述调用信息还可以包括上述第一对象的对象类型,从而使得电子设备可以根据该对象类型对上述第一对象进行解析。该对象类型可以是服务调用设备调用泛化接口时传入的另一项参数。

步骤203,按照请求参数执行服务标识指示的服务。

在本实施例中,基于步骤202所获取到的服务标识和请求参数,电子设备可以执行该服务标识所指示的服务,执行服务时可以使用该请求参数。如此,电子设备即可以执行服务调用设备所需要调用的服务。

在本实施例的一些可选实现方式中,上述远程过程调用方法还包括以下步骤:首先,电子设备可以在执行服务时获取执行状态和/或执行结果,并将执行状态和/或执行结果封装为第二对象;之后,电子设备可以将第二对象作为上述泛化接口的返回值返回至服务调用设备。其中,执行结果可以使用序列化后的数据,上述服务没有返回值时执 行结果可以为空。执行状态是表示实际调用接口执行情况,执行状态可以采用枚举结构类型表示。

其中,可以是使用200这一代码表示执行成功。通过这种方式,服务调用设备就可以获得第二对象并可以对第二对象进行解析以获得上述执行状态和/或执行结果。该执行状态和/或执行结果即可以作为远程过程调用的返回信息。其中,第二对象可以是结构体实例化形成的对象,也可以是类实例化形成的对象。

可选的,上述调用信息还可以包括上述第二对象的对象类型,从而使得电子设备可以将执行状态和/或执行结果按照该对象类型封装成第二对象。该对象类型可以是服务调用设备调用泛化接口时传入的又一项参数。

在本实施例的一些可选实现方式中,上述远程过程调用方法还包括以下步骤:

首先,若电子设备在执行服务过程中若产生异常,可以将所产生的异常的异常描述信息和/或异常代码封装为第三对象,其中异常描述信息用于描述异常的主要信息,可以使用字符串类型表示,异常代码则是用于判断异常(比如接口不存在,或者超时等)的代码,该异常代码也可以使用枚举结构表示。

之后,电子设备可以将第三对象作为上述泛化接口的异常对象返回至所述服务调用设备。可选的,上述调用信息还可以包括上述第三对象的对象类型,从而使得电子设备可以将执行状态和/或执行结果按照该对象类型封装成第三对象。该对象类型可以是服务调用设备调用泛化接口时传入的又一项参数。其中,第三对象可以是结构体实例化形成的对象,也可以是类实例化形成的对象。

在本实施例的一些可选实现方式中,步骤202中,电子设备可以通过反射机制从第一对象体中获取服务标识以及请求参数。

本申请的上述实施例提供的方法,通过泛化接口发送调用信息服务且将所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象后作为调用泛化接口时所使用的参数。此时只编译生成一个idl,减少了需要维护的内容,且减少了所调用的服务变化 对rpc跨语言调用的影响。

进一步参考图3,其示出了远程过程调用方法的又一个实施例的流程300。该远程过程调用方法的流程300,包括以下步骤:

步骤301,通过调用泛化接口向服务提供设备发送调用信息。

在本实施例中,远程过程调用方法运行于其上的电子设备(例如图1所示的服务提供设备)可以通过有线连接方式或者无线连接方式向服务提供设备发送调用信息,其中,电子设备可以通过调用泛化接口的方式发出上述调用信息,该调用信息可以作为调用泛化接口时的参数。该参数(即调用信息)可以包括第一对象,其中第一对象可以是对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的对象。其中,上述服务标识可以是实际调用接口的接口标识,相应的,请求参数即为调用上述实际调用接口所需要使用的参数。

步骤302,接收服务提供设备通过泛化接口的返回值所返回的第二对象。

在本实施例中,基于步骤301发送到服务提供设备的调用信息,服务调用设备可以对调用信息进行处理以生成第二对象,并将第二对象作为泛化接口的返回值返回至电子设备。从而,电子设备可以获得服务提供设备返回的第二对象。服务调用设备可以通过如下方式具体处理:首先,服务提供设备先获取调用信息中的第一对象并解析该第一对象,以获取上述服务标识以及上述请求参数;接着,服务提供设备可以按照上述请求参数执行上述服务标识指示的服务;然后,服务提供设备可以将执行服务的执行状态和/或执行结果封装为上述第二对象,并将上述对象作为泛化接口的返回值返回至电子设备。可选的,上述调用信息还可以包括上述第一对象的对象类型和第二对象的对象类型,从而使得电子设备可以根据第一对象的对象类型对上述第一对象进行解析,也可以将执行状态和/或执行结果按照预设的对象类型封装成第二对象。这些对象类型也可以是服务调用设备调用泛化接口时传入的参数。

步骤303,解析第二对象以获得上述服务的执行状态和/或执行结 果。

在本实施例中,基于步骤302获取到的第二对象,电子设备可以对该第二对象进行解析,从而可以获得第二对象中包括的执行状态和/或执行结果。可选的,当第二对象的对象类型是由电子设备通过传入的参数确定时,电子设备即可根据该对象类型对第二对象进行解析。上述执行状态和/或执行结果即可以作为执行远程过程调用的返回信息。

在本实施例的一些可选实现方式中,上述远程过程调用方法还可以包括以下步骤:电子设备可以接收服务提供设备作为泛化接口的异常对象所返回的第三对象,其中,第三对象是服务提供设备将执行服务过程所产生异常的异常描述信息和/或异常代码进行封装而形成的;之后,电子设备可以解析所述第三对象以获得上述异常描述信息和/或异常代码。

本申请的上述实施例提供的方法,通过泛化接口发送调用信息服务且将所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象后作为调用泛化接口时所使用的参数。此时只编译生成一个idl,减少了需要维护的内容,且减少了所调用的服务变化对rpc跨语言调用的影响。

进一步参考图4,作为对图2所示方法的实现,本申请提供了一种远程过程调用装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图4所示,本实施例所述的远程过程调用装置400包括:接收单元401、解析单元402、执行单元403。其中,接收单元401用于接收服务调用设备通过调用泛化接口发送的调用信息,其中调用信息包括服务调用设备调用泛化接口时传入的参数,该参数包括对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;解析单元402用于解析第一对象,以获取服务标识以及请求参数;执行单元403配置用于按照请求参数执行服务标识指示的服务。

在本实施例中,远程过程调用装置400的接收单元401、解析单 元402、执行单元403的具体处理可以参考图2对应实施例的步骤201、步骤202以及步骤203,这里不再赘述。

在本实施例的一些可选实现方式中,远程过程调用装置400还可以包括:第一封装单元(未示出),用于将执行服务的执行状态和/或执行结果封装为第二对象;第一返回单元(未示出),用于将第二对象作为泛化接口的返回值返回至服务调用设备,以使服务调用设备对接收到的第二对象进行解析以获得所述结果数据。具体处理可以参考图2对应实施例中相应的实现方式。

在本实施例的一些可选实现方式中,远程过程调用装置400还可以包括:第二封装单元(未示出),用于将执行服务过程所产生异常的异常描述信息和/或异常代码封装为第三对象;第二返回单元(未示出),用于将第三对象作为泛化接口的异常对象返回至服务调用设备,以使服务调用设备对接收到的异常对象进行解析以获得异常描述信息和/或异常代码。具体处理可以参考图2对应实施例中相应的实现方式。

在本实施例的一些可选实现方式中,上述解析单元402进一步用于:通过反射机制从所述第一对象中获取所述服务标识以及所述请求参数。具体处理可以参考图2对应实施例中相应的实现方式。

进一步参考图5,作为对图3所示方法的实现,本申请提供了一种远程过程调用装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图5所示,本实施例所述的远程过程调用装置500包括:发送单元501、第一接收单元502、第一解析单元503。其中,发送单元501用于通过调用泛化接口向服务提供设备发送调用信息,调用信息包括调用泛化接口时传递的参数,其中上述参数包括:对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;第一接收单元502用于接收服务提供设备作为泛化接口的返回值所返回的第二对象,其中,服务提供设备是在解析所述第一对象以获取服务标识以及请求参数并按照请求参数执行服务标识指示的服务后、将执行服务的执行状态和/或执行结果封装为第二对象;第一解析单元503 用于解析第二对象以获得上述服务的执行状态和/或执行结果。

在本实施例中,远程过程调用装置500的发送单元501、第一接收单元502、第一解析单元503的具体处理可以参考图3对应实施例的步骤301、步骤302以及步骤303,这里不再赘述。

在本实施例的一些可选实现方式中,远程过程调用装置500还可以包括:第二接收单元(未示出),用于接收服务提供设备作为泛化接口的异常对象所返回的第三对象,其中,第三对象是所述服务提供设备将执行服务过程所产生异常的异常描述信息和/或异常代码进行封装而形成的;第二解析单元(未示出),用于解析第三对象以获得异常描述信息和/或异常代码。具体处理可以参考图3对应实施例中相应的实现方式。

下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统600的结构示意图。

如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程 序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、解析单元、执行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,执行单元还可以被描述为“按照所述请求参数执行所述服务标识指示的服务的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收服务调用设备通过调用泛化接口发送的调用信息,其中所述调用信息包括服务调用设备调用泛化接口时传入的参数,所述参数包括对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;解析所述第一对象,以获取所述服务标识以及所 述请求参数;按照所述请求参数执行所述服务标识指示的服务;或者,上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:通过调用泛化接口向服务提供设备发送调用信息,所述调用信息包括调用泛化接口时传递的参数,其中所述参数包括:对所调用服务的服务标识和调用服务所使用的请求参数进行封装而形成的第一对象;接收所述服务提供设备作为所述泛化接口的返回值所返回的第二对象,其中,所述服务提供设备是在解析所述第一对象以获取所述服务标识以及所述请求参数并按照所述请求参数执行所述服务标识指示的服务后、将执行所述服务的执行状态和/或执行结果封装为所述第二对象;解析所述第二对象以获得所述服务的执行状态和/或执行结果。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1