一种远程调用方法及装置以及系统
技术领域
本公开涉及计算机
技术领域
,具体而言,涉及一种远程调用方法及装置。背景技术
远程过程调用(Remote Procedure Call,RPC)是服务之间的一种互相调用方式,客户端能够通过向服务器发送调用请求,从而实现对服务器上的应用或函数的调用,调用请求中通常携带有调用函数或应用所需的请求数据,客户端与服务器之间进行通信时需要网络协议的支持,并且,通信内容需要进行序列化处理,才能够成功传输。
通常的RPC实现方案仅支持一种序列化协议,且序列化协议与网络协议之间的耦合程度较强,无法实现序列化协议的自由替换,导致RPC实现方案的灵活性较低,不利用在多种场景下使用。
发明内容
本公开实施例至少提供一种远程调用方法及装置。
第一方面,本公开实施例提供了一种远程调用方法,应用于客户端,包括:
响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型;
基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器;
接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果;
基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
一种可选的实施方式中,所述基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器,包括:
获取所述配置参数集合指示的目标序列化协议、目标网络协议和目标调用模型对应的实例;
基于所述目标调用模型对应的实例,对所述远程调用请求携带的请求数据进行预处理,得到预处理后的请求数据;
基于所述目标序列化协议对应的实例,对所述预处理后的请求数据进行序列化处理,得到序列化请求数据;
基于所述目标网络协议对应的实例,将所述序列化请求数据发送至所述服务器。
一种可选的实施方式中,所述基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果,包括:
基于所述目标序列化协议对应的实例,对所述第一远程调用结果进行反序列化处理,得到所述第二远程调用结果。
一种可选的实施方式中,在得到所述得到第二远程调用结果后,所述方法还包括:
基于所述目标调用模型对应的实例,对所述第二远程调用结果进行还原处理,得到第三远程调用结果。
第二方面,本公开实施例还提供另一种远程调用方法,应用于服务器,包括:
接收客户端发送的序列化请求数据;
基于所述序列化请求数据,确定所述序列化请求数据对应的配置参数集合;所述配置参数集合中包括在多种序列化协议和多种调用模型中选择的目标序列化协议和目标调用模型;
基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据;
基于所述反序列化后的请求数据调用目标程序,得到第二远程调用结果;
基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,并将所述第一远程调用结果发送至所述客户端。
一种可选的实施方式中,所述基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据,包括:
获取所述配置参数集合指示的所述目标序列化协议和目标调用模型对应的实例;
基于所述目标序列化协议对应的实例对所述序列化请求数据进行反序列化处理,得到反序列化后的初始请求数据;
基于所述目标调用模型对应的实例对所述初始请求数据进行还原处理,得到所述反序列化后的请求数据。
一种可选的实施方式中,所述基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,包括:
基于所述目标调用模型对应的实例对所述第二远程调用结果进行预处理,得到预处理后的第二远程调用结果;
基于所述目标序列化协议对应的实例对所述预处理后的远程调用结果进行序列化处理,得到所述第一远程调用结果。
第三方面,本公开实施例还提供一种远程调用装置,用于客户端,包括:
第一确定模块,用于响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型;
第一调用模块,用于基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器;
第一接收模块,用于接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果;
第一处理模块,用于基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
一种可选的实施方式中,所述第一调用模块具体用于:
获取所述配置参数集合指示的目标序列化协议、目标网络协议和目标调用模型对应的实例;
基于所述目标调用模型对应的实例,对所述远程调用请求携带的请求数据进行预处理,得到预处理后的请求数据;
基于所述目标序列化协议对应的实例,对所述预处理后的请求数据进行序列化处理,得到序列化请求数据;
基于所述目标网络协议对应的实例,将所述序列化请求数据发送至所述服务器。
一种可选的实施方式中,所述第一处理模块具体用于:
基于所述目标序列化协议对应的实例,对所述第一远程调用结果进行反序列化处理,得到所述第二远程调用结果。
一种可选的实施方式中,所述第一处理模块在得到所述得到第二远程调用结果后,还用于:
基于所述目标调用模型对应的实例,对所述第二远程调用结果进行还原处理,得到第三远程调用结果。
第四方面,本公开实施例还提供另一种远程调用装置,用于服务器,包括:
第二接收模块,用于接收客户端发送的序列化请求数据;
第二确定模块,用于基于所述序列化请求数据,确定所述序列化请求数据对应的配置参数集合;所述配置参数集合中包括在多种序列化协议和多种调用模型中选择的目标序列化协议和目标调用模型;
第二处理模块,用于基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据;
第二调用模块,用于基于所述反序列化后的请求数据调用目标程序,得到第二远程调用结果;
第三处理模块,用于基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,并将所述第一远程调用结果发送至所述客户端。
一种可选的实施方式中,所述第二处理模块具体用于:
获取所述配置参数集合指示的所述目标序列化协议和目标调用模型对应的实例;
基于所述目标序列化协议对应的实例对所述序列化请求数据进行反序列化处理,得到反序列化后的初始请求数据;
基于所述目标调用模型对应的实例对所述初始请求数据进行还原处理,得到所述反序列化后的请求数据。
一种可选的实施方式中,所述第三处理模块在基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果时,用于:
基于所述目标调用模型对应的实例对所述第二远程调用结果进行预处理,得到预处理后的第二远程调用结果;
基于所述目标序列化协议对应的实例对所述预处理后的远程调用结果进行序列化处理,得到所述第一远程调用结果。
第五方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面、第一方面中任一种可能的实施方式、第二方面、或第二方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面、第一方面中任一种可能的实施方式、第二方面、或第二方面中任一种可能的实施方式中的步骤。
本公开实施例提供的远程调用方法及装置,首先响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型;然后,基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器;之后,接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果;最后,基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
本公开实施例通过目标调用方法确定远程调用请求匹配的配置参数集合,再利用配置参数集合中指示的协议及调用模型进行远程调用,以实现将序列化协议及网络协议解耦,在一套RPC实现方案中支持多种序列化协议、网络协议及调用模型,提高RPC方案的灵活性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种远程调用方法的流程图;
图2示出了本公开实施例所提供的另一种远程调用方法的流程图;
图3示出了本公开实施例所提供的再一种远程调用方法的流程图;
图4示出了本公开实施例所提供的一种远程调用装置的示意图;
图5示出了本公开实施例所提供的另一种远程调用装置的示意图;
图6示出了本公开实施例所提供的一种电子设备的示意图;
图7示出了本公开实施例所提供的另一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,通常的RPC实现方案仅支持一种序列化协议,且序列化协议与网络协议之间的耦合程度较强,无法实现序列化协议的自由替换,导致RPC实现方案的灵活性较低,不利用在多种场景下使用。
基于上述研究,本公开提供了一种远程调用方法及装置,通过目标调用方法确定远程调用请求匹配的配置参数集合,再利用配置参数集合中指示的协议及调用模型进行远程调用,以实现将序列化协议及网络协议解耦,在一套RPC实现方案中支持多种序列化协议、网络协议及调用模型,提高RPC方案的灵活性。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种远程调用系统进行详细介绍,本公开实施例所提供的远程调用系统包括客户端即服务器,客户端可以远程调用服务器上的程序或函数。
参见图1所示,为本公开实施例提供的远程调用方法的流程图,所述方法可以应用于上述远程调用系统中的客户端,包括步骤S101~S104,其中:
S101、响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型。
在客户端检测到远程调用请求后,可以读取远程调用请求指示的目标调用方法,目标调用方法可以为一个字符串,字符串中记录有配置参数集合,配置参数集合中包括目标序列化协议、目标网络协议和目标调用模式,上述目标序列化协议、目标网络协议和目标调用模式为从多种序列化协议、多种网络协议及多种调用模型中选择的。
其中,序列化协议将一种结构的数据转换为另一种结构数据的具体交换格式,如JSON、Thrift、Protobuf;网络协议为服务器与客户端之间互相调用时会使用到的通信协议,如TCP、HTTP、HTTP2;调用模型是服务其与客户端之间互相调用时使用的交互模型,如ping-pong、oneway、streaming,调用模型中可以包括一个或多个中间件,对通信数据进行处理。
这里,目标协议及目标调用模型的选择可以为用户根据具体需求来确定的。
S102、基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器。
该步骤中,可以确定配置参数集合指示的目标序列化协议、目标网络协议以及目标调用模型,然后获取其对应的实例,并利用获取的实例对远程调用请求携带的请求数据进行处理,得到序列化请求数据,并利用目标网络协议对应的实例将序列化请求数据发送至服务器,以使服务器基于序列化请求数据调用目标程序。
具体的,S102可以包括以下步骤:
获取所述配置参数集合指示的目标序列化协议、目标网络协议和目标调用模型对应的实例;
基于所述目标调用模型对应的实例,对所述远程调用请求携带的请求数据进行预处理,得到预处理后的请求数据;
基于所述目标序列化协议对应的实例,对所述预处理后的请求数据进行序列化处理,得到序列化请求数据;
基于所述目标网络协议对应的实例,将所述序列化请求数据发送至所述服务器。
其中,目标序列化协议可以由序列化协议生产者生成,序列化协议生产者能够获取目标序列化协议对应的实例;目标网络协议可以由网络协议生产者提供,网络协议生产者同样可以获取到目标网络协议对应的实例;在目标调用模型中,可以描述中间件、目标序列化协议及目标网络协议之间具体如何执行。
这样,通过网络协议生产者及序列化协议生产者能够获取不同种类的目标序列化协议,实现对不同网络协议及序列化协议的获取及调用,从而构建序列化协议及网络协议相互独立的RPC架构,使得RPC方案中网络协议与序列化协议之间的强耦合关系得到解耦,提高RPC方案的灵活性。
具体的,可以在内存中建立一个调用上下文,将获取到的实例与请求数据存储进调用上下文中,然后依次执行预处理、序列化及发送的步骤。在执行序列化之前,还可以从配置中心获取远程调用请求对应的配置数据,对网络协议、序列化协议、调用模型等待配置参数进行配置。
在预处理的步骤中,可以按照预设的顺序,一次执行目标调用模型中的中间件,对请求数据进行逐步处理,得到预处理后的请求数据,之后,按照目标序列化协议的要求,将预处理后的请求数据转换为序列化请求数据,这里,序列化请求数据可以为二进制数据,然后,可以将序列化请求数据通过目标网络协议的实例写入到真实连接中,最后通过真实连接将其传递至服务器。
示例性的,在将序列化请求数据发送给服务器的过程中,可以生成针对目标程序的调用请求,调用请求可以携带有目标程序的标识信息,以及上述序列化请求数据,然后通过真实连接将上述调用请求发送至服务器,目标程序可以是一段函数,调用请求用于调用服务器上的函数,比如,调用请求可以用于请求用户列表,此时目标程序可以为列表查询函数,序列化请求数据中可以包括用户的标识信息、验证信息等参数,再比如,调用请求还可以用于请求商品的详细信息,此时目标程序可以为商品信息查询函数,序列化请求数据中可以包括商品的标识信息等。
S103、接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果。
该步骤中,服务器可以对序列化请求数据进行反序列化处理,并利用反序列化处理得到请求数据调用目标应用或目标函数,得到远程调用结果,再将其序列化处理得到第一远程调用结果,并将第一远程调用结果发送至客户端。
S104、基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
该步骤中,由于客户端接收到的第一远程调用结果是序列化后的调用结果,需要对其进行反序列化处理,通过目标序列化协议对应的实例,即可对其进行反序列化处理,得到第二远程调用结果。
在得到第二远程调用结果后,由于第二远程调用处理经过目标调用模型的中间件的预处理,还需要对其进行还原处理,通过目标调用模型对应的实例,可以将预处理逆执行,从而实现还原,得到第二远程调用结果。
参见图2所示,为本公开实施例提供的另一种远程调用方法的流程图,所述方法可以应用于上述远程调用系统中的服务器,包括步骤S201~S205,其中:
S201、接收客户端发送的序列化请求数据。
上述序列化请求数据为通过步骤S101至步骤S102生成并发送的序列化请求数据,采用目标序列化协议、目标网络协议以及目标调用模型。
S202、基于所述序列化请求数据,确定所述序列化请求数据对应的配置参数集合;所述配置参数集合中包括在多种序列化协议和多种调用模型中选择的目标序列化协议和目标调用模型。
该步骤中,可以根据序列化请求数据的特征确定其对应的目标序列化协议或目标调用模型,根据在接收序列化请求数据时的采用的真实连接可确定其对应的目标网络协议。
S203、基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据。
与客户端的方式类似,服务器可以获取配置参数集合指示的目标序列化协议和目标调用模型对应的实例,将其与序列化请求数据存储至内存中的调用上下文中,以便后续使用,利用目标序列化协议对序列化请求数据进行反序列化,得到反序列化后的初始请求数据,再利用目标调用模型对应实例进行预处理的逆执行,将初始请求数据还原为请求数据。
S204、基于所述反序列化后的请求数据调用目标程序,得到第二远程调用结果。
该步骤中,可以将得到的请求数据作为参数,调用其对应的目标程序,得到目标程序反馈的调用结果。
S205、基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,并将所述第一远程调用结果发送至所述客户端。
该步骤中,可以采用与客户端相似的手段,在得到第二远程调用结果后,可以利用目标调用模型对应的实例对第二远程调用结果进行预处理,再利用目标序列化协议的实例对预处理后的第二远程调用结果进行序列化处理,得到第一远程调用结果,之后,可以利用接收序列化请求数据时对应的真实连接,按照目标网络协议的要求,将其发送至客户端,实现远程调用。
本公开实施例通过目标调用方法确定远程调用请求匹配的配置参数集合,再利用配置参数集合中指示的协议及调用模型进行远程调用,以实现将序列化协议及网络协议解耦,在一套RPC实现方案中支持多种序列化协议、网络协议及调用模型,提高RPC方案的灵活性。
参见图3所示,为本公开实施例提供的再一种远程调用方法的流程图,包括步骤1至步骤19,其中:
1.Send ping data:调用者准备好请求数据(ping data),并将其发送至客户端。
2.Call ping method:调用目标调用方法(RPC方法)得到配置参数集合,并将配置参数集合传入至调用进程。
3.Create client context:在客户端的内存中构建RPC的调用上下文Context。
3a.Inject protocol:从客户端的序列化协议生产者ProtocolProvider处获取目标序列化协议Protocol并将目标序列化协议注入调用上下文。
3b.Inject connection:从网络协议生产者ConnectionProvider处获取目标网络协议,并目标网络协议Connection注入至调用上下文Context中。
3c.Inject handle:将目标调用模型Handle注入到Context中。
3d.Inject remote config:从配置中心ConfigCenter获取配置数据并注入至Context中。
4.Execute middleware(out):依次执行Handle中的中间件Middleware,对请求数据进行预处理。
5.Serialization:序列化请求数据。
5a.Encode memory data:将预处理完成的请求数据通过目标序列化协议的实例Protocol.encode()序列化为二进制数据。
5b.Write binary data:将序列化完成的二进制数据通过目标网络协议的实例Connection.write()写入真实连接。
6.Send binary data:真实连接通过网络将二进制数据传递至对应服务器的网络协议生产者(ConnectionProvider)。
7.Emit connection event:ConnectionProvider检测到接收事件、生成目标网络协议的实例Connection并触发connection事件。
8.Create server context:在服务器的内存中构建RPC调用上下文Context。
8a.Inject connection:将从ConnectionProvider处获取到的目标网络协议的实例Connection注入Context中。
8b.Inject protocol:从序列化协议生产者ProtocolProvider中获取并注入目标序列化协议的实例Protocol。
8c.Inject handle:注入目标调用模型Handle至Context中。
8d.Inject remote config:从配置中心ConfigCenter获取并注入配置数据。
9.Deserialization:对序列化请求数据进行反序列化处理。
9a.Read binary data:通过目标网络协议的实例Connection.read()从真实连接处获取二进制数据。
9b.Decode binary data:通过目标序列化协议的实例Protocol.decode()将二进制数据转换为请求数据。
10.Execute middleware(in):依次执行Handle中的Middleware,将请求数据还原。
11.Receive ping data:被调用者(目标程序)接收到请求数据。
12.Send pong data:被调用者返回响应数据(第二调用结果)。
13.Execute middleware(out):依次执行Handle中的Middleware进行预处理。
14.Serialization:序列化预处理后的响应数据(第一调用结果)。
14a.Encode memory data:将处理完成的响应数据通过Protocol.encode序列化为二进制数据
14b.Write binary data:将序列化完成的二进制数据通过目标网络协议的实例Connection.write写入真实连接。写入完成后,可以异步回收RPC调用的Context。
15.Send binary data:真实连接通过网络将二进制数据(第一远程调用结果)传递至对应客户端。
16.Deserialization:反序列化响应数据,得到第二远程调用结果。
16a.Read binary data:通过Connection.read从真实连接处获取二进制数据(第一远程调用结果)。
16b.Decode binary data:通过Protocol.decode将二进制数据转换为响应数据(第二远程调用结果)。
17.Execute middleware(in):依次执行Handle中的Middleware,进行还原处理。
18.Release client context:回收RPC调用的Context。
19.Receive pong data:调用者接收到响应数据。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与远程调用方法对应的远程调用装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述远程调用方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种远程调用装置的示意图,所述装置包括:
第一确定模块410,用于响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型;
第一调用模块420,用于基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器;
第一接收模块430,用于接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果;
第一处理模块440,用于基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
一种可选的实施方式中,所述第一调用模块420具体用于:
获取所述配置参数集合指示的目标序列化协议、目标网络协议和目标调用模型对应的实例;
基于所述目标调用模型对应的实例,对所述远程调用请求携带的请求数据进行预处理,得到预处理后的请求数据;
基于所述目标序列化协议对应的实例,对所述预处理后的请求数据进行序列化处理,得到序列化请求数据;
基于所述目标网络协议对应的实例,将所述序列化请求数据发送至所述服务器。
一种可选的实施方式中,所述第一处理模块440具体用于:
基于所述目标序列化协议对应的实例,对所述第一远程调用结果进行反序列化处理,得到所述第二远程调用结果。
一种可选的实施方式中,所述第一处理模块440在得到所述得到第二远程调用结果后,还用于:
基于所述目标调用模型对应的实例,对所述第二远程调用结果进行还原处理,得到第三远程调用结果。
参照图5所示,为本公开实施例提供的另一种远程调用装置的示意图,所述装置包括:
第二接收模块510,用于接收客户端发送的序列化请求数据;
第二确定模块520,用于基于所述序列化请求数据,确定所述序列化请求数据对应的配置参数集合;所述配置参数集合中包括在多种序列化协议和多种调用模型中选择的目标序列化协议和目标调用模型;
第二处理模块530,用于基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据;
第二调用模块540,用于基于所述反序列化后的请求数据调用目标程序,得到第二远程调用结果;
第三处理模块550,用于基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,并将所述第一远程调用结果发送至所述客户端。
一种可选的实施方式中,所述第二处理模块530具体用于:
获取所述配置参数集合指示的所述目标序列化协议和目标调用模型对应的实例;
基于所述目标序列化协议对应的实例对所述序列化请求数据进行反序列化处理,得到反序列化后的初始请求数据;
基于所述目标调用模型对应的实例对所述初始请求数据进行还原处理,得到所述反序列化后的请求数据。
一种可选的实施方式中,所述第三处理模块550在基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果时,用于:
基于所述目标调用模型对应的实例对所述第二远程调用结果进行预处理,得到预处理后的第二远程调用结果;
基于所述目标序列化协议对应的实例对所述预处理后的远程调用结果进行序列化处理,得到所述第一远程调用结果。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的远程调用方法,本公开实施例还提供了一种电子设备600,如图6所示,为本公开实施例提供的电子设备600结构示意图,包括:
处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述电子设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:
响应于远程调用请求,基于所述远程调用请求指示的目标调用方法,确定与所述远程调用请求匹配的配置参数集合;所述配置参数集合中包括在多种序列化协议、多种网络协议和多种调用模型中选择的目标序列化协议、目标网络协议、和目标调用模型;
基于所述配置参数集合,生成所述远程调用请求对应的序列化请求数据,并将所述序列化请求数据发送至服务器;
接收所述服务器基于所述序列化请求数据反馈的序列化后的第一远程调用结果;
基于所述配置参数集合对所述第一远程调用结果进行反序列化处理,得到第二远程调用结果。
对应于图2中的远程调用方法,本公开实施例还提供了另一种电子设备700,如图7所示,为本公开实施例提供的电子设备700结构示意图,包括:
处理器71、存储器72、和总线73;存储器72用于存储执行指令,包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换,当所述电子设备700运行时,所述处理器71与所述存储器72之间通过总线73通信,使得所述处理器71执行以下指令:
接收客户端发送的序列化请求数据;
基于所述序列化请求数据,确定所述序列化请求数据对应的配置参数集合;所述配置参数集合中包括在多种序列化协议和多种调用模型中选择的目标序列化协议和目标调用模型;
基于所述配置参数集合,对所述序列化请求数据进行反序列化处理,得到反序列化后的请求数据;
基于所述反序列化后的请求数据调用目标程序,得到第二远程调用结果;
基于所述配置参数集合对所述第二远程调用结果进行序列化处理,生成第一远程调用结果,并将所述第一远程调用结果发送至所述客户端。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的XXXX方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的远程调用方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种接口配置方法及系统