一种实现远程调用的方法和系统的制作方法

文档序号:7897640阅读:331来源:国知局
专利名称:一种实现远程调用的方法和系统的制作方法
技术领域
本发明涉及计算机网络技术领域,特别是涉及一种远程调用的方法和系统。
背景技术
不同计算机、不同进程的通信是构建软件系统的重要计数,目前的计算机领域中 有很多远程过程调用(RPC,Remote Procedure Call Protocol)的相关技术,比如跨平台的 Web krvice,局限于操作系统特性或语言特性的如COM+,.Net Remoting,JMI等。随着互 联网系统的日益复杂,对稳定的、易描述的、跨平台、跨语言、高效的远程过程调用协议有着 很强烈的需求。

发明内容
本发明提供了一种实现远程调用的方法和系统,本发明的技术方案提供了一种稳 定的、易描述的、跨平台的、跨语言的、高效的远程调用方式。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种实现远程调用的方法,客户端和服务器端均从上至下分为四 层应用层、协议抽象层、协议信道实现层和物理通信层;其中,协议信道实现层包含多种 协议通道,则客户端远程调用服务器的过程包括客户端应用层调用客户端协议抽象层,向客户端协议抽象层传入目的服务器信息 和调用数据形成调用请求消息;客户端协议抽象层根据服务器信息中的目的服务器地址, 从客户端协议信道实现层所包含的多个协议通道中选择一个协议通道;所述选择的协议通 道在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通信层; 客户端物理通信层将所述调用请求消息通过网络发送给服务器端;服务器端物理通信层将所接收到的调用请求消息发送给服务器端对应的协议信 道;所述对应的协议信道对调用请求消息进行解包处理后发送给服务器端协议抽象层;服 务器端协议抽象层将调用请求消息中的目的服务器信息和调用数据发送给服务器端应用 层;服务器端应用层根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传入 服务器端协议抽象层;服务器端协议抽象层,对应答数据进行封装,形成调用应答消息,并 发送给服务器端对应的协议通道;服务器端的对应协议通道将调用应答消息进行打包处理 后,再由服务器端的物理通信层将调用应答消息沿原连接发送给客户端;客户端物理通信层将所接收到的调用应答消息发送给客户端协议信道实现层中 的对应协议通道,该对应协议通道对调用应答消息进行解包处理后发送给客户端协议抽象 层;客户端协议抽象层将调用应答消息中的应答数据发送给客户端应用层。本发明还公开了一种实现远程调用的系统,包括客户端和服务器;客户端包括 客户端应用层模块、客户端协议抽象层模块、客户端协议信道实现层模块和客户端物理通 信层模块;服务器包括服务器端应用层模块、服务器端协议抽象层模块、服务器端协议信 道实现层模块和服务器端物理通信层模块;其中客户端协议信道实现层模块和服务器端协议信道实现层模块分别包括多个协议通道子模块;客户端应用层模块,用于调用客户端协议抽象层模块,向客户端协议抽象层模块 传入目的服务器信息和调用数据形成调用请求消息;用于接收客户端协议抽象层模块返回 的应答数据;客户端协议抽象层模块,用于根据服务器信息中的目的服务器地址,从客户端协 议信道实现层模块所包含的多个协议通道子模块中选择一个协议通道子模块,将所选择的 调用请求消息发送给所选择的协议通道子模块;用于将所述协议通道子模块返回的调用应 答消息中的应答数据发送给客户端应用层模块;客户端协议信道实现层模块中的协议通道子模块,用于在所述调用请求消息中填 充客户端信息,并进行打包处理后发送给客户端物理通信层模块,用于将客户端物理通信 层模块返回的调用应答消息进行解包处理后发送给客户端协议抽象层模块;客户端物理通信层模块,用于将所述调用请求消息通过网络发送给服务器端;用 于将服务器端返回的调用应答消息发送给客户端协议信道实现层模块中的对应协议通道 子模块;服务器端物理通信层模块,用于将所接收到的调用请求消息发送给服务器端协议 信道实现层模块中的对应协议信道子模块;用于将对应协议信道子模块返回的调用应答消 息沿原连接发送给客户端;服务器端协议信道实现层模块中的对应协议信道子模块,用于对调用请求消息进 行解包处理后发送给服务器端协议抽象层模块,并用于对服务器端协议抽象层模块返回的 调用应答消息进行打包处理后发送给服务器端物理通信层模块;服务器端协议抽象层模块,用于将调用请求消息中的目的服务器信息和调用数据 发送给服务器端应用层模块;用于对服务器端应用层模块返回的应答数据进行封装,形成 调用应答消息,并发送给对应的协议通道子模块;服务器端应用层模块,用于根据所接收的信息实现服务器端应用,生成应答数据, 将应答数据传入服务器端协议抽象层模块。由上述可见,本发明这种客户端和服务器端均从上至下分为四层应用层、协议抽 象层、协议信道实现层和物理通信层,其中协议信道实现层针对不同协议的通信打包和解 包,协议抽象层将地层的具体协议与上层的应用隔离开的技术方案,为目前的需求提供了 一种稳定的、易描述的、跨平台、跨语言、高效的远程调用方案。


图1是本发明实施例中的一种实现远程调用的方法的示意图;图2是本发明中的一种实现远程调用的系统的组成结构示意图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本发明进行详细描述。图1是本发明实施例中的一种实现远程调用的方法的示意图。如图1所示,客户 端和服务器端均从上至下分为四层应用层、协议抽象层、协议信道实现层和物理通信层;其中,协议信道实现层包含多种协议通道,如传输控制协议(TCP)通道、超文本传输协议 (HTTP)通道和管道(Pipe)通信协议通道。最下层的物理通信层,由操作系统支持,主流操作系统(Windows,Linux, Unix)均 支持tcp,http,namedpipe等通信协议,在不同的平台中可以选择适合自己的平台的通信 协议,本发明中提供了 TCP、HTTP和Pipe等多种通信协议的支持,以面对不同的网络环境或 应用场景。协议信道实现层,实现针对不同协议(TCP,HTTP, Pipe)的通信打包、解包,用于 将客户端应用的数据打包并通过物理通信层将数据发送至服务器端,并接受返回的应答数 据。协议抽象层通过封装将底层的具体协议与上层应用隔离开,通过封装提供与通信 层无关的接口给应用开发者,这样充分保留了远程过程调用(RPC)的灵活性。由于协议抽象层通过封装将底层的具体协议与上层应用隔离开了,因此应用层可 以用不同的语言开发代码库,如可以采用Java,C#, C, php等几个主流开发语言开发代码 库,并实现各种语言之间的调用兼容性,而不会受到开发语言的限制。客户端应用层直接使用封装好的协议抽象层的代码调用服务器端,服务器端直接 使用协议抽象层提供的框架代码实现服务器端应用。则客户端远程调用服务器的过程包括1)客户端应用层调用客户端协议抽象层,向客户端协议抽象层传入目的服务器 信息和调用数据形成调用请求消息;客户端协议抽象层根据服务器信息中的目的服务器地 址,从客户端协议信道实现层所包含的多个协议通道中选择一个协议通道;所述被选择的 协议通道在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通 信层;客户端物理通信层将所述调用请求消息通过网络发送给服务器端;这里,客户端物理通信层可以将所述调用请求消息发送给业务代理网关服务器; 业务代理网关服务器根据所述调用请求消息中的上下文定为标识,将所述调用请求消息路 由到目的服务器。后续会对这部分进行描述描述。2)服务器端物理通信层将所接收到的调用请求消息发送给服务器端对应的协议 信道;所述对应的协议信道对调用请求消息进行解包处理后发送给服务器端协议抽象层; 服务器端协议抽象层将调用请求消息中的目的服务器信息和调用数据发送给服务器端应 用层;服务器端应用层根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传 入服务器端协议抽象层;服务器端协议抽象层,对应答数据进行封装,形成调用应答消息, 并发送给服务器端对应的协议通道;服务器端的对应协议通道将调用应答消息进行打包处 理后,再由服务器端的物理通信层将调用应答消息沿原连接发送给客户端;3)客户端物理通信层将所接收到的调用应答消息发送给客户端协议信道实现层 中的对应协议通道,该对应协议通道对调用应答消息进行解包处理后发送给客户端协议抽 象层;客户端协议抽象层将调用应答消息中的应答数据发送给客户端应用层。本发明的技术方案提供了一种抽象描述远程接口(Rpclnterfance)及远程调用 消息(RpcMessage)的方式,具体描述如下服务器提供的远程接口可以包含多个名字唯一 的服务接口(即多个服务接口中每个服务器接口的名字都是唯一的),每个服务接口可以 包含多个服务方法,每个服务方法包含输入参数类型和输出参数类型。在本发明的一个实
7施例中,输入参数类型及输出参数类型的定义通过“I^otocol Buffers”方式进行,所有接 口为强类型声明,在客户端和服务器端均可加入类型检查机制。在本发明的一个实施例中,远程调用对象的调用请求消息包含如下信息来 源服务名称、来源服务器主机名,目的服务接口名,目的服务方法名,上下文定位标识 (Contexttoi),调用包体数据和调用请求消息可选项。其中,目的服务接口名,目的服务方 法名和上下文定位标识是服务器信息,来源服务名称、来源服务器主机名是客户端信息,调 用包体数据是具体的调用数据,调用请求消息可选项是一个标志位,如果该位有效,则表示 该消息是调用请求消息。调用应答消息包括应答码、返回的调用应答数据和调用应道消息 可选性。在Http通信中包体格式如下;调用请求消息POST rpc. do ? s = service-name&m = method-name HTTP/1. 1User-Agent :serviceicomputerCookie :to = context-uriContent-Type :multipart/byterangesContent-Length content-length-value<body-data>上述调用请求消息格式的说明如表1所示
权利要求
1.一种实现远程调用的方法,其特征在于,客户端和服务器端均从上至下分为四层 应用层、协议抽象层、协议信道实现层和物理通信层;其中,协议信道实现层包含多种协议 通道,则客户端远程调用服务器的过程包括客户端应用层调用客户端协议抽象层,向客户端协议抽象层传入目的服务器信息和调 用数据形成调用请求消息;客户端协议抽象层根据服务器信息中的目的服务器地址,从客 户端协议信道实现层所包含的多个协议通道中选择一个协议通道;所述被选择的协议通道 在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通信层;客 户端物理通信层将所述调用请求消息通过网络发送给服务器端;服务器端物理通信层将所接收到的调用请求消息发送给服务器端对应的协议信道;所 述对应的协议信道对调用请求消息进行解包处理后发送给服务器端协议抽象层;服务器端 协议抽象层将调用请求消息中的目的服务器信息和调用数据发送给服务器端应用层;服务 器端应用层根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传入服务器 端协议抽象层;服务器端协议抽象层,对应答数据进行封装,形成调用应答消息,并发送给 服务器端对应的协议通道;服务器端的对应协议通道将调用应答消息进行打包处理后,再 由服务器端的物理通信层将调用应答消息沿原连接发送给客户端;客户端物理通信层将所接收到的调用应答消息发送给客户端协议信道实现层中的对 应协议通道,该对应协议通道对调用应答消息进行解包处理后发送给客户端协议抽象层; 客户端协议抽象层将调用应答消息中的应答数据发送给客户端应用层。
2.根据权利要求1所述的方法,其特征在于,所述目的服务器信息包括目的服务接口名、目的服务方法名;目的服务器提供的远 程接口中包含多个名字唯一的服务接口,每个服务接口包含多个服务方法; 所述客户端信息包括来源服务名称和来源服务器主机名称; 协议信道实现层包含传输控制协议TCP通道、超文本传输协议HTTP通道和管道通信 协议通道。
3.根据权利要求1所述的方法,其特征在于, 所述目的服务器信息还包括上下文定为标识;客户端物理通信层将所述调用请求消息通过网络发送给服务器端包括客户端物理通 信层将所述调用请求消息发送给业务代理网关服务器;业务代理网关服务器根据所述调用 请求消息中的上下文定为标识,将所述调用请求消息路由到目的服务器。
4.根据权利要求1至3中任一项所述的方法,其特征在于,该方法进一步包括 服务器与客户端建立双工连接,将客户端加入服务器的会话列表中;服务器从会话列表中选择特定的客户端,并向该客户端发送远程调用信令;客户端接 收远程调用信令并处理。
5.根据权利要求4所述的方法,其特征在于,所述服务器与客户端建立双工连接包括 服务器启动一个双工连接服务,并开始监听;客户端启动一个客户端应用,并开始连接服务器;连接成功后,客户端向服务器发送注册命令;服务器根据注册命令进行鉴权,鉴权成功后,与客户端建立双工连接。
6.一种实现远程调用的系统,其特征在于,该系统包括客户端和服务器;其中,客户端包括客户端应用层模块、客户端协议抽象层模块、客户端协议信道实现层模块和客户端物 理通信层模块;服务器包括服务器端应用层模块、服务器端协议抽象层模块、服务器端协 议信道实现层模块和服务器端物理通信层模块;其中客户端协议信道实现层模块和服务器 端协议信道实现层模块分别包括多个协议通道子模块;客户端应用层模块,用于调用客户端协议抽象层模块,向客户端协议抽象层模块传入 目的服务器信息和调用数据形成调用请求消息;用于接收客户端协议抽象层模块返回的应 答数据;客户端协议抽象层模块,用于根据服务器信息中的目的服务器地址,从客户端协议信 道实现层模块所包含的多个协议通道子模块中选择一个协议通道子模块,将所选择的调用 请求消息发送给所选择的协议通道子模块;用于将所述协议通道子模块返回的调用应答消 息中的应答数据发送给客户端应用层模块;客户端协议信道实现层模块中的协议通道子模块,用于在所述调用请求消息中填充客 户端信息,并进行打包处理后发送给客户端物理通信层模块,用于将客户端物理通信层模 块返回的调用应答消息进行解包处理后发送给客户端协议抽象层模块;客户端物理通信层模块,用于将所述调用请求消息通过网络发送给服务器端;用于将 服务器端返回的调用应答消息发送给客户端协议信道实现层模块中的对应协议通道子模 块;服务器端物理通信层模块,用于将所接收到的调用请求消息发送给服务器端协议信道 实现层模块中的对应协议信道子模块;用于将对应协议信道子模块返回的调用应答消息沿 原连接发送给客户端;服务器端协议信道实现层模块中的对应协议信道子模块,用于对调用请求消息进行解 包处理后发送给服务器端协议抽象层模块,并用于对服务器端协议抽象层模块返回的调用 应答消息进行打包处理后发送给服务器端物理通信层模块;服务器端协议抽象层模块,用于将调用请求消息中的目的服务器信息和调用数据发送 给服务器端应用层模块;用于对服务器端应用层模块返回的应答数据进行封装,形成调用 应答消息,并发送给对应的协议通道子模块;服务器端应用层模块,用于根据所接收的信息实现服务器端应用,生成应答数据,将应 答数据传入服务器端协议抽象层模块。
7.根据权利要求6所述的系统,其特征在于,所述目的服务器信息包括目的服务接口名、目的服务方法名;目的服务器提供的远 程接口中包含多个名字唯一的服务接口,每个服务接口包含多个服务方法; 所述客户端信息包括来源服务名称和来源服务器主机名称; 协议信道实现层模块包括传输控制协议TCP通道子模块、超文本传输协议HTTP通道 子模块和管道通信协议通道子模块。
8.根据权利要求6所述的系统,其特征在于,该系统还包括业务代理网关服务器; 所述目的服务器信息还包括上下文定为标识;所述客户端物理通信层模块将所述调用请求消息发送给业务代理网关服务器;业务代 理网关服务器根据所述调用请求消息中的上下文定为标识,将所述调用请求消息路由到目 的服务器。
9.根据权利要求6至8中任一项所述的系统,其特征在于,服务器进一步用于与客户端建立双工连接,将客户端加入服务器的会话列表中; 服务器进一步用于从会话列表中选择特定的客户端,并向该客户端发送远程调用信 令;客户端接收远程调用信令并处理。
10.根据权利要求9所述的系统,其特征在于,所述服务器与客户端建立双工连接包括服务器启动一个双工连接服务,并开始监听; 客户端启动一个客户端应用,并开始连接服务器; 连接成功后,客户端向服务器发送注册命令; 服务器根据注册命令进行鉴权,鉴权成功后,与客户端建立双工连接。
全文摘要
本发明公开了一种实现远程调用的方法和系统。本发明这种客户端和服务器端均从上至下分为四层应用层、协议抽象层、协议信道实现层和物理通信层,其中协议信道实现层针对不同协议的通信打包和解包,协议抽象层将底层的具体协议与上层的应用隔离开的技术方案,为目前的需求提供了一种稳定的、易描述的、跨平台、跨语言、高效的远程调用方案。
文档编号H04L29/06GK102098296SQ20101061192
公开日2011年6月15日 申请日期2010年12月29日 优先权日2010年12月29日
发明者高磊 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1