远程过程调用方法、装置及通信系统与流程

文档序号:12752714阅读:307来源:国知局
远程过程调用方法、装置及通信系统与流程

本发明涉及通信技术领域,特别涉及一种远程过程调用方法、装置及通信系统。



背景技术:

RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机上请求服务的协议,当一台设备上的程序调用另一台设备的服务提供程序时,就称之为一次RPC过程,请求服务的程序即为客户端,服务提供程序即为服务端。

一次RPC过程具体可以包括下述过程:服务端上注册有消息处理组件、服务钩子组件和处理组件,客户端要调用服务端提供的服务时会向服务端发送调用请求消息,服务端的消息处理组件在接收该调用请求信息后,发送给服务钩子组件,该服务钩子组件再向处理组件转发该调用请求消息,由处理组件对该调用请求消息进行响应,并根据响应的结果生成调用响应消息,最后,通过该服务钩子组件和该消息处理组件返回给客户端。

然而,客户端事实上也可以提供一些服务,但是上述RPC过程中,仅能由客户端调用服务端提供的服务,而不能由服务端直接调用客户端提供的服务。当服务端需要调用客户端提供的服务时,需要在客户端所在的设备上配置服务端,在服务端所在的设备上配置客户端,由配置的客户端调用配置的服务端提供的服务。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:服务端需要调用客户端提供的服务时,不能直接调用,而仅能通过增加服务端和客户端的方式调用,增加了通信对象的数目,造成了系统资源的浪费,提高了复杂性。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种远程过程调用方法、装置及通信系统。所述技术方案如下:

第一方面,提供了一种远程过程调用方法,应用于客户端中,所述客户端注册有第一消息处理组件、第一服务钩子组件和第一处理组件,所述方法包括:

所述第一消息处理组件接收服务端发送的第一调用请求消息,向所述第一服务钩子组件发送所述第一调用请求消息;

所述第一服务钩子组件接收所述第一调用请求消息,向所述第一处理组件发送所述第一调用请求消息;

所述第一处理组件接收所述第一调用请求消息,对所述第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,向所述第一服务钩子组件发送所述第一调用响应消息;

所述第一服务钩子组件接收所述第一调用响应消息,向所述第一消息处理组件发送所述第一调用响应消息;

所述第一消息处理组件接收所述第一调用响应消息,向所述服务端发送所述第一调用响应消息。

在一种可能实现方式中,所述第一服务钩子组件包括多个服务接口,所述第一服务钩子组件接收所述第一调用请求消息,向所述第一处理组件发送所述第一调用请求消息,包括:

所述第一服务钩子组件接收到所述第一调用请求消息时,调用与所述第一调用请求消息对应的服务接口,向所述第一处理组件发送所述第一调用请求消息。

在另一种可能实现方式中,所述方法还包括:

所述第一消息处理组件向所述服务端发送第二调用请求消息,所述服务端用于对所述第二调用请求消息进行响应,并生成第二调用响应消息;

当所述第一消息处理组件接收到所述服务端发送的第二调用响应消息时,对所述第二调用响应消息进行处理。

在另一种可能实现方式中,所述方法还包括:

当所述第一消息处理组件接收到所述服务端发送的任一消息时,获取所述消息中携带的属性信息;

如果所述属性信息为第一预设属性信息,则确定所述消息为调用请求消息;

如果所述属性信息为第二预设属性信息,则确定所述消息为调用响应消息。

在另一种可能实现方式中,所述消息包括消息头和消息体,所述消息头携带所述属性信息。

第二方面,提供了一种远程过程调用方法,应用于服务端中,所述服务端注册有第二消息处理组件,所述方法包括:

所述第二消息处理组件向客户端发送第一调用请求消息;

当所述第二消息处理组件接收到所述客户端返回的第一调用响应消息时,对所述第一调用响应消息进行处理;

其中,所述客户端注册的第一消息处理组件用于接收所述第一调用请求消息,向注册的第一服务钩子组件发送所述第一调用请求消息,所述第一服务钩子组件用于向注册的第一处理组件发送所述第一调用请求消息,所述第一处理组件用于对所述第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,并返回所述第一调用响应消息。

在一种可能实现方式中,所述服务端还注册有第二服务钩子组件和第二处理组件,所述方法还包括:

所述第二消息处理组件接收所述客户端发送的第二调用请求消息,向所述第二服务钩子组件发送所述第二调用请求消息;

所述第二服务钩子组件接收所述第二调用请求消息,向所述第二处理组件发送所述第二调用请求消息;

所述第二处理组件接收所述第二调用请求消息,对所述第二调用请求消息进行响应,根据响应结果生成第二调用响应消息,向所述第二服务钩子组件发送所述第二调用响应消息;

所述第二服务钩子组件接收所述第二调用响应消息,向所述第二消息处理组件发送所述第二调用响应消息;

所述第二消息处理组件接收所述第二调用响应消息,向所述客户端发送所述第二调用响应消息。

在另一种可能实现方式中,所述第二服务钩子组件包括多个服务接口,所述第二服务钩子组件接收所述第二调用请求消息,向所述第二处理组件发送所述第二调用请求消息,包括:

所述第二服务钩子组件接收到所述第二调用请求消息时,调用与所述第二调用请求消息对应的服务接口,向所述第二处理组件发送所述第二调用请求消息。

在另一种可能实现方式中,所述方法还包括:

当所述第二消息处理组件接收到所述客户端发送的任一消息时,获取所述消息中携带的属性信息;

如果所述属性信息为第一预设属性信息,则确定所述消息为调用请求消息;

如果所述属性信息为第二预设属性信息,则确定所述消息为调用响应消息。

在另一种可能实现方式中,所述消息包括消息头和消息体,所述消息头携带所述属性信息。

第三方面,提供了一种客户端,所述客户端包括:

所述客户端包括第一消息处理组件、第一服务钩子组件和第一处理组件;

所述第一消息处理组件,用于接收服务端发送的第一调用请求消息,向所述第一服务钩子组件发送所述第一调用请求消息;

所述第一服务钩子组件,用于接收所述第一调用请求消息,向所述第一处理组件发送所述第一调用请求消息;

所述第一处理组件,用于接收所述第一调用请求消息,对所述第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,向所述第一服务钩子组件发送所述第一调用响应消息;

所述第一服务钩子组件,用于接收所述第一调用响应消息,向所述第一消息处理组件发送所述第一调用响应消息;

所述第一消息处理组件,用于接收所述第一调用响应消息,向所述服务端发送所述第一调用响应消息。

在一种可能实现方式中,所述第一服务钩子组件包括多个服务接口,所述第一服务钩子组件用于所述第一服务钩子组件接收到所述第一调用请求消息时,调用与所述第一调用请求消息对应的服务接口,向所述第一处理组件发送所述第一调用请求消息。

在另一种可能实现方式中,所述第一消息处理组件还用于向所述服务端发送第二调用请求消息,所述服务端用于对所述第二调用请求消息进行响应,并生成第二调用响应消息;

所述第一消息处理组件还用于当接收到所述服务端发送的第二调用响应消息时,对所述第二调用响应消息进行处理。

在另一种可能实现方式中,所述第一消息处理组件还用于当接收到所述服务端发送的任一消息时,获取所述消息中携带的属性信息;如果所述属性信息为第一预设属性信息,则确定所述消息为调用请求消息;如果所述属性信息为第二预设属性信息,则确定所述消息为调用响应消息。

在另一种可能实现方式中,所述消息包括消息头和消息体,所述消息头携带所述属性信息。

第四方面,提供了一种服务端,所述服务端包括:

所述服务端包括第二消息处理组件;

所述第二消息处理组件,用于向客户端发送第一调用请求消息;

所述第二消息处理组件,还用于当接收到所述客户端返回的第一调用响应消息时,对所述第一调用响应消息进行处理;

其中,所述客户端注册的第一消息处理组件用于接收所述第一调用请求消息,向注册的第一服务钩子组件发送所述第一调用请求消息,所述第一服务钩子组件用于向注册的第一处理组件发送所述第一调用请求消息,所述第一处理组件用于对所述第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,并返回所述第一调用响应消息。

在一种可能实现方式中,所述服务端还包括第二服务钩子组件和第二处理组件;

所述第二消息处理组件用于接收客户端发送的第二调用请求消息,向所述第二服务钩子组件发送所述第二调用请求消息;

所述第二服务钩子组件用于接收所述第二调用请求消息,向所述第二处理组件发送所述第二调用请求消息;

所述第二处理组件用于接收所述第二调用请求消息,对所述第二调用请求消息进行响应,根据响应结果生成第二调用响应消息,向所述第二服务钩子组件发送所述第二调用响应消息;

所述第二服务钩子组件用于接收所述第二调用响应消息,向所述第二消息处理组件发送所述第二调用响应消息;

所述第二消息处理组件用于接收所述第二调用响应消息,向所述客户端发送所述第二调用响应消息。

在另一种可能实现方式中,所述第二服务钩子组件包括多个服务接口,所述第二服务钩子组件还用于所述第二服务钩子组件接收到所述第二调用请求消息时,调用与所述第二调用请求消息对应的服务接口,向所述第二处理组件发送所述第二调用请求消息。

在另一种可能实现方式中,所述第二消息处理组件还用于当接收到所述客户端发送的任一消息时,获取所述消息中携带的属性信息;如果所述属性信息为第一预设属性信息,则确定所述消息为调用请求消息;如果所述属性信息为第二预设属性信息,则确定所述消息为调用响应消息。

在另一种可能实现方式中,所述消息包括消息头和消息体,所述消息头携带所述属性信息。

第五方面,提供了一种通信系统,所述通信系统包括第三方面所述的客户端和第四方面的服务端。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例提供的远程过程调用方法、装置及通信系统,通过在客户端注册第一服务钩子组件,并在消息中增加方向信息,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接访问客户端提供的服务,同时也实现了客户端和服务端功能对称可互访的通信系统,该通信系统只需要两个通信对象,不需要重新创建通信对象,避免了增加通信对象的数目,降低了复杂性,提高了灵活性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种通信系统的结构示意图;

图2是本发明实施例提供的一种远程过程调用方法的流程图;

图3是本发明实施例提供的一种远程过程调用方法的流程图;

图4是本发明实施例提供的一种远程过程调用方法的流程图;

图5是本发明实施例提供的一种客户端的结构示意图;

图6是本发明实施例提供的一种服务端的结构示意图;

图7是本发明实施例提供的一种服务端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例提供的一种通信系统的结构示意图。如图1所示,该通信系统包括客户端和服务端,该客户端中至少包括第一消息处理组件、第一服务钩子组件和第一处理组件,该服务端中至少包括第二消息处理组件、第二服务钩子组件和第二处理组件。其中,该第一消息处理组件与该第二消息处理组件之间可以进行信息交互。

该通信系统为功能对称可互访的通信系统,该服务端可以向该客户端提供服务,该客户端可以直接调用该服务端提供的服务,而且,该客户端也可以向服务端提供服务,该服务端可以直接调用该客户端提供的服务。

当该服务端需要调用该客户端提供的服务时,该第二消息处理组件向该第一消息处理组件发送调用请求消息,该第一消息处理组件接收到该调用请求消息后,通过第一服务钩子组件传递给第一处理组件,该第一处理组件对该调用请求消息进行响应,并将调用响应消息经由该第一服务钩子组件、第一消息处理组件返回该第二消息处理组件。

当该客户端需要调用该服务端提供的服务时,该第一消息处理组件向该第二消息处理组件发送调用请求消息,该第二消息处理组件接收到该调用请求消息后,通过第二服务钩子组件传递给第二处理组件,该第二处理组件对该调用请求消息进行响应,并将调用响应消息经由该第二服务钩子组件、第二消息处理组件返回该第一消息处理组件。

可选地,该客户端还可以包括用户接口,用户接口与第一消息处理组件可以进行交互,例如,用户触发的调用请求消息可以通过该用户接口传递给该第一消息处理组件,或者该第一消息处理组件接收到的调用响应消息可以通过该用户接口展示给用户。

可选地,该服务端还可以包括用户接口,用户接口与第二消息处理组件可以进行交互,例如,该服务端的维护人员触发的调用请求消息可以通过该用户接口传递给该第二消息处理组件,或者该第二消息处理组件接收到的调用响应消息可以通过该用户接口展示给维护人员。

图2是本发明实施例提供的一种远程过程调用方法的流程图。该发明实施例的执行主体为客户端,该客户端注册有第一消息处理组件、第一服务钩子组件和第一处理组件,参见图2,该方法包括:

201、该第一消息处理组件接收服务端发送的第一调用请求消息,向该第一服务钩子组件发送该第一调用请求消息。

202、该第一服务钩子组件接收该第一调用请求消息,向该第一处理组件发送该第一调用请求消息。

203、该第一处理组件接收该第一调用请求消息,对该第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,向该第一服务钩子组件发送该第一调用响应消息。

204、该第一服务钩子组件接收该第一调用响应消息,向该第一消息处理组件发送该第一调用响应消息。

205、该第一消息处理组件接收该第一调用响应消息,向该服务端发送该第一调用响应消息。

综上所述,本发明实施例提供的远程过程调用方法,通过在客户端注册第一服务钩子组件,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将第一调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接调用客户端提供的服务,避免了增加通信对象的数目,降低了复杂性,提高了系统灵活性。

可选地,该第一服务钩子组件包括多个服务接口,该第一服务钩子组件接收该第一调用请求消息,向该第一处理组件发送该第一调用请求消息,包括:

该第一服务钩子组件接收到该第一调用请求消息时,调用与该第一调用请求消息对应的服务接口,向该第一处理组件发送该第一调用请求消息。

可选地,该方法还包括:

该第一消息处理组件向该服务端发送第二调用请求消息,该服务端用于对该第二调用请求消息进行响应,并生成第二调用响应消息;

当该第一消息处理组件接收到该服务端发送的第二调用响应消息时,对该第二调用响应消息进行处理。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图3是本发明实施例提供的一种远程过程调用方法的流程图。该发明实施例的执行主体为服务端,该服务端注册有第二消息处理组件,参见图3,该方法包括:

301、该第二消息处理组件向该客户端发送第一调用请求消息。

302、当该第二消息处理组件接收到该客户端返回的第一调用响应消息时,对该第一调用响应消息进行处理。

其中,该客户端注册的第一消息处理组件用于接收该第一调用请求消息,向注册的第一服务钩子组件发送该第一调用请求消息,该第一服务钩子组件用于向注册的第一处理组件发送该第一调用请求消息,该第一处理组件用于对该第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,并返回该第一调用响应消息。

综上所述,本发明实施例提供的远程过程调用方法,通过在客户端注册、第一服务钩子组件,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将第一调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接调用客户端提供的服务,避免了增加通信对象的数目,降低了复杂性,提高了系统灵活性。

可选地,该服务端还包括、第二服务钩子组件和第二处理组件,该方法还包括:

该第二消息处理组件接收该客户端发送的第二调用请求消息,向该第二服务钩子组件发送该第二调用请求消息;

该第二服务钩子组件接收该第二调用请求消息,向该第二处理组件发送该第二调用请求消息;

该第二处理组件接收该第二调用请求消息,对该第二调用请求消息进行响应,根据响应结果生成第二调用响应消息,向该第二服务钩子组件发送该第二调用响应消息;

该第二服务钩子组件接收该第二调用响应消息,向该第二消息处理组件发送该第二调用响应消息;

该第二消息处理组件接收该第二调用响应消息,向该客户端发送该第二调用响应消息。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图4是本发明实施例提供的一种远程过程调用方法的流程图。该发明实施例的交互主体为客户端和服务端,参见图4,该方法包括:

401、在该客户端的第一消息处理组件中注册第一服务钩子组件。

其中,该客户端可以为手机、个人电脑等,该服务端可以为服务器或者其他网络设备等,本发明实施例对此均不做限定。

本发明实施例中,该客户端中注册有第一消息处理组件和第一处理组件,而为了实现该服务端能直接调用该客户端提供的服务,在该客户端中还注册该第一服务钩子组件。

具体地,该第一消息处理组件提供注册接口,该客户端通过调用该注册接口,在该第一消息处理组件中注册该第一服务钩子组件,并在该第一服务钩子组件中生成多个服务接口。其中,该多个服务接口是该第一处理组件提供的服务接口,该第一服务钩子组件通过调用该多个服务接口,可以请求该第一处理组件提供相应的服务。

其中,该第一消息处理组件用于与服务端进行交互,接收来自服务端的消息并向客户端的其他组件分发该消息,或者向服务端发送消息。该第一处理组件用于为服务端处理业务,并根据处理结果生成响应消息。该第一服务钩子组件与该第一消息处理组件连接,并与该第一处理组件连接,可以作为该第一消息处理组件与该第一处理组件的中介,在该第一消息处理组件与该第一处理组件之间进行消息传递。也即是,该第一消息处理组件、该第一服务钩子组件和该第一处理组件可以通过交互为该服务端提供服务。

402、该服务端注册的第二消息处理组件向该客户端发送第一调用请求消息。

该服务端注册有第二消息处理组件、第二服务钩子组件和第二处理组件。其中,该第二消息处理组件用于与客户端进行交互,接收来自客户端的消息并向服务端的其他组件分发该消息,或者向客户端发送消息。该第二处理组件用于为客户端处理业务,并根据处理结果生成响应消息,该第二服务钩子组件与该第二消息处理组件连接,并与该第二处理组件连接,可以作为该第二消息处理组件与该第二处理组件的中介,在该第二消息处理组件与该第二处理组件之间进行消息传递。也即是,该第二消息处理组件、该第二服务钩子组件和该第二处理组件可以通过交互为该客户端提供服务。

本发明实施例中,当服务端要调用客户端提供的服务,由客户端为服务端处理业务时,向客户端发送第一调用请求消息。其中,该第一调用请求消息用于指示客户端为服务端处理业务。

实际上,该客户端可处理的业务类型可以包括多种类型,例如提供图片下载业务、提供视频下载业务、处理图片的业务等,本发明实施例对此不做限定。当该服务端需要该客户端处理的业务类型不同时,所发送的第一调用请求消息的类型也不同。

例如,服务端需要下载客户端的图片时,向客户端发送携带有图片信息的第一调用请求消息,以请求该客户端返回对应的图片。而当服务端需要下载客户端的视频时,向客户端发送携带有视频信息的第一调用请求消息,以请求该客户端返回对应的视频。

403、该第一消息处理组件接收该服务端发送的第一调用请求消息,向该第一服务钩子组件发送该第一调用请求消息。

本发明实施例仅是以该第一消息处理组件接收到第一调用请求消息为例进行说明,当接收到该第一调用请求消息时,向该第一服务钩子组件发送该第一调用请求消息,以便通过该第一服务钩子组件,向该第一处理组件发送该第一调用请求消息。

然而,在实际应用中,除了调用请求消息之外,该第一消息处理组件也会接收到其他属性的消息,因此,每次接收到任一消息时,需要判断该消息的属性,根据判断结果确定该消息的处理方式。

可选地,当该第一消息处理组件接收到该服务端发送的任一消息时,获取该消息中携带的属性信息,如果该属性信息为第一预设属性信息,则确定该消息为调用请求消息,而如果该属性信息为第二预设属性信息,则确定该消息为调用响应消息。

消息中携带的属性信息用于确定该消息的属性,该属性信息可以分为第一预设属性信息和第二预设属性信息,该第一消息处理组件接收到任一消息时,通过判断该消息中携带的属性信息为第一预设属性信息还是第二预设属性信息,即可确定该消息为调用请求消息还是调用响应消息。

可选地,该消息包括消息头和消息体,该消息头携带该属性信息。另外,该消息头中除了属性信息外,还可以包括消息ID(Identity,序列号)、消息长度、消息体序列化类型和消息的错误码等,本发明实施例对此不做限定。

在本发明实施例提供的另一实施例中,如果该第一消息处理组件确定接收到调用响应消息,表示该消息是该客户端针对该第一消息处理组件之前发送给该服务端的调用请求消息而返回的响应消息,也即是该服务端为该客户端处理业务后得到的处理结果,此时,该第一消息处理组件对该调用响应消息进行处理。

具体地,该第一消息处理组件根据该调用响应消息生成操作记录。或者,该第一消息处理组件可以将该调用响应消息返回给用户接口,通过该用户接口将该调用响应消息展示给用户,以便用户获知该服务端的业务处理结果。

例如,当该调用响应消息为该服务端返回的图片时,该第一消息处理组件存储该图片,或者将该图片返回给用户接口,展示给用户。

404、该第一服务钩子组件接收该第一调用请求消息,向该第一处理组件发送该第一调用请求消息。

可选地,该第一服务钩子组件包括多个服务接口,该第一服务钩子组件接收到该第一调用请求消息时,调用与该第一调用请求消息对应的服务接口,向该第一处理组件发送该第一调用请求消息。

该多个服务接口中,不同的服务接口所针对的业务类型也不同,每次该第一服务钩子组件接收到第一调用请求消息时,可以根据该第一调用请求消息的类型,调用与该类型匹配的服务接口,向该第一处理组件发送该第一调用请求消息,此时该第一处理组件会按照所调用的服务接口的类型进行业务处理。

例如,当该服务端需要从该客户端下载图片时,则该第一服务钩子组件根据携带有图片信息的第一调用请求消息,启用与下载图片相关的服务接口,并通过该服务接口向第一处理组件发送该第一调用请求消息。或者,当该服务端需要从该客户端下载视频时,则该第一服务钩子组件根据携带有视频信息的第一调用请求消息,启用与下载视频相关的服务接口,并通过该服务接口向第一处理组件发送该第一调用请求消息。

405、该第一处理组件接收该第一调用请求消息,对该第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,向该第一服务钩子组件发送该第一调用响应消息。

基于上述步骤402中的举例,该第一处理组件在接收到该携带有图片信息的第一调用请求消息后,根据该图片信息查找到对应的图片,并向该第一服务钩子组件发送第一调用响应消息,该第一调用响应消息包括查找到的图片。

或者,该第一处理组件在接收到该携带有视频信息的第一调用请求消息后,根据该视频信息查找到对应的视频,并向该第一服务钩子组件发送第一调用响应消息,该第一调用响应消息包括查找到的视频。

406、该第一服务钩子组件接收该第一调用响应消息,向该第一消息处理组件发送该第一调用响应消息。

407、该第一消息处理组件接收该第一调用响应消息,向该服务端发送该第一调用响应消息。

408、当该第二消息处理组件接收到该客户端返回的第一调用响应消息时,对该第一调用响应消息进行处理。

本发明实施例仅是以该第二消息处理组件确定接收到第一调用响应消息为例进行说明,然而,在实际应用中,除了调用响应消息之外,该第二消息处理组件也会接收到其他属性的消息,因此,每次接收到任一消息时,需要判断该消息的属性,根据判断结果确定该消息的处理方式。

可选地,当该第二消息处理组件接收到该客户端发送的任一消息时,获取该消息中携带的属性信息,如果该属性信息为第一预设属性信息,则确定该消息为调用请求消息,而如果该属性信息为第二预设属性信息,则确定该消息为调用响应消息。

当该第二消息处理组件确定接收到该第一调用响应消息时,对该第一调用响应消息的处理方式与步骤403中该第一消息处理组件对该调用响应消息进行处理的方式类似,在此不再赘述。

而在本发明实施例提供的另一实施例中,如果该第二消息处理组件确定接收到调用请求消息,表示该消息是该客户端发送给该服务端的调用请求消息,则该第二消息处理组件将该调用请求消息经由第二服务钩子组件发送给第二处理组件,由该第二处理组件对该调用请求消息进行处理,处理方式与步骤405类似,在此不再赘述。

综上所述,本发明实施例提供的远程过程调用方法,通过在客户端注册第一服务钩子组件,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将第一调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接调用客户端提供的服务,避免了增加通信对象的数目,降低了复杂性,提高了系统灵活性。

本发明实施例仅是以服务端调用客户端提供的服务为例进行说明,而实际上,该服务端和该客户端组成一个功能对称可互访的通信系统,也即是客户端可以调用服务端提供的服务,服务端也可以调用客户端提供的服务。

因此,在图4所示实施例的基础上,客户端调用服务端所提供服务的过程可以包括:

409、该第一消息处理组件向该服务端发送第二调用请求消息。

本发明实施例以该第一调用请求消息表示服务端向客户端发送的调用请求消息,以该第二调用请求消息表示客户端向服务端发送的调用请求消息,也即是该第一调用请求消息和该第二调用请求消息的区别仅在于发送消息的设备不同,本发明实施例并未对该第一调用请求消息和该第二调用请求消息的具体内容进行限定。

410、该第二消息处理组件接收客户端发送的第二调用请求消息,向该第二服务钩子组件发送该第二调用请求消息。

可选地,当该第二消息处理组件接收到该客户端发送的任一消息时,获取该消息中携带的属性信息,如果该属性信息为第一预设属性信息,则确定该消息为调用请求消息,如果该属性信息为第二预设属性信息,则确定该消息为调用响应消息。

可选地,该消息包括消息头和消息体,该消息头携带该属性信息。

411、该第二服务钩子组件接收该第二调用请求消息,向该第二处理组件发送该第二调用请求消息。

可选地,该第二服务钩子组件包括多个服务接口,该第二服务钩子组件接收到该第二调用请求消息时,调用与该第二调用请求消息对应的服务接口,向该第二处理组件发送该第二调用请求消息。

412、该第二处理组件接收该第二调用请求消息,对该第二调用请求消息进行响应,根据响应结果生成第二调用响应消息,向该第二服务钩子组件发送该第二调用响应消息。

413、该第二服务钩子组件接收该第二调用响应消息,向该第二消息处理组件发送该第二调用响应消息。

414、该第二消息处理组件接收该第二调用响应消息,向该客户端发送该第二调用响应消息。

415、当该第一消息处理组件接收到该服务端发送的第二调用响应消息时,对该第二调用响应消息进行处理。

该步骤409至步骤415与上述步骤402至408类似,在此不再赘述。

本发明实施例中,为了对第一调用请求消息和第二调用请求消息加以区分,第一预设属性信息可以包括第一方向信息和第二方向信息。对于任一消息来说,如果该消息的属性信息为该第一方向信息时,表示该消息为服务端向客户端发送的调用请求消息,如果该消息的属性信息为该第二方向信息时,表示该消息为客户端向服务端发送的调用请求消息。

为了对第一调用响应消息和第二调用响应消息加以区分,第二预设属性信息可以包括第三方向信息和第四方向信息。对于任一消息来说,如果该消息的属性信息为该第三方向信息时,表示该消息为服务端向客户端发送的调用响应消息,如果该消息的属性信息为该第四方向信息时,表示该消息为客户端向服务端发送的调用响应消息。

例如,第一方向信息可以为call message等,第二方向信息可以为event message等,第三方向信息可以为call reply message等,第四方向信息可以为event reply message等,本发明实施例中均不做限定。

综上所述,本发明实施例提供了功能对称的客户端和服务端,也即是提供了一种功能对称可互访的通信系统,客户端可以访问服务端的服务,服务端也可以访问客户端的功能。通过利用RPC的工作原理,在客户端注册第一服务钩子组件,并在消息中增加方向信息,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接访问客户端提供的服务,同时也实现了客户端和服务端功能对称可互访的通信系统,该通信系统只需要两个通信对象,不需要重新创建通信对象,避免了增加通信对象的数目,降低了复杂性,提高了灵活性。

图5是本发明实施例提供的一种客户端的结构示意图,参见图5,该客户端包括第一消息处理组件501、第一服务钩子组件502和第一处理组件503。

该第一消息处理组件501用于接收服务端发送的第一调用请求消息,向该第一服务钩子组件502发送该第一调用请求消息;

该第一服务钩子组件502用于接收该第一调用请求消息,向该第一处理组件503发送该第一调用请求消息;

该第一处理组件503用于接收该第一调用请求消息,对该第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,向该第一服务钩子组件502发送该第一调用响应消息;

该第一服务钩子组件502还用于接收该第一调用响应消息,向该第一消息处理组件501发送该第一调用响应消息;

该第一消息处理组件501还用于接收该第一调用响应消息,向该服务端发送该第一调用响应消息。

综上所述,本发明实施例提供的客户端,通过在客户端注册第一服务钩子组件,当服务端需要调用客户端提供的服务时,第一消息处理组件接收来自服务端的第一调用请求消息,并将第一调用请求消息传递给第一服务钩子组件,由第一服务钩子组件传递给第一处理组件,第一处理组件对第一调用请求消息进行响应,并将第一调用响应消息经由第一服务钩子组件和第一消息处理组件返回给服务端,从而在不增加服务端和客户端的前提下,实现了服务端直接调用客户端提供的服务,避免了增加通信对象的数目,降低了复杂性,提高了系统灵活性。

在一种可能实现方式中,该第一服务钩子组件502包括多个服务接口,该第一服务钩子组件502,还用于该第一服务钩子组件502接收到该第一调用请求消息时,调用与该第一调用请求消息对应的服务接口,向该第一处理组件503发送该第一调用请求消息。

在另一种可能实现方式中,该第一消息处理组件501,还用于向该服务端发送第二调用请求消息,该服务端用于对该第二调用请求消息进行响应,并生成第二调用响应消息;

该第一消息处理组件501,还用于当接收到该服务端发送的第二调用响应消息时,对该第二调用响应消息进行处理。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图6是本发明实施例提供的一种服务端的结构示意图,参见图6,该服务端包括第二消息处理组件601。

该第二消息处理组件601用于向客户端发送第一调用请求消息;

该第二消息处理组件601还用于当接收到该客户端返回的第一调用响应消息时,对该第一调用响应消息进行处理;

其中,该客户端注册的第一消息处理组件用于接收该第一调用请求消息,向注册的第一服务钩子组件发送该第一调用请求消息,该第一服务钩子组件用于向注册的第一处理组件发送该第一调用请求消息,该第一处理组件用于对该第一调用请求消息进行响应,根据响应结果生成第一调用响应消息,并返回该第一调用响应消息。

综上所述,本发明实施例提供的服务端,通过在服务端的第二消息处理组件向客户端发送第一调用请求消息,并通过该第二消息处理组件在接收到该客户端返回的第一调用响应消息时,对该第一调用响应消息进行处理,进而将该第一调用响应消息发送给服务端的用户接口,从而在不增加服务端和客户端的前提下,实现了服务端直接调用客户端提供的服务,避免了增加通信对象的数目,降低了复杂性,提高了系统灵活性。

参见图7,在一种可能实现方式中,该服务端还包括第二服务钩子组件602和第二处理组件603。

该第二消息处理组件601,还用于接收客户端发送的第二调用请求消息,向该第二服务钩子组件602发送该第二调用请求消息;

该第二服务钩子组件602,用于接收该第二调用请求消息,向该第二处理组件603发送该第二调用请求消息;

该第二处理组件603,用于接收该第二调用请求消息,对该第二调用请求消息进行响应,根据响应结果生成第二调用响应消息,向该第二服务钩子组件602发送该第二调用响应消息;

该第二服务钩子组件602,还用于接收该第二调用响应消息,向该第二消息处理组件601发送该第二调用响应消息;

该第二消息处理组件601,还用于接收该第二调用响应消息,向该客户端发送该第二调用响应消息。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

需要说明的是:上述实施例提供的客户端和服务端在进行远程过程调用时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将客户端和服务端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的远程过程调用方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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