CN102098296A - 一种实现远程调用的方法和系统 - Google Patents
一种实现远程调用的方法和系统 Download PDFInfo
- Publication number
- CN102098296A CN102098296A CN2010106119266A CN201010611926A CN102098296A CN 102098296 A CN102098296 A CN 102098296A CN 2010106119266 A CN2010106119266 A CN 2010106119266A CN 201010611926 A CN201010611926 A CN 201010611926A CN 102098296 A CN102098296 A CN 102098296A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- protocol
- layer module
- request message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种实现远程调用的方法和系统。本发明这种客户端和服务器端均从上至下分为四层:应用层、协议抽象层、协议信道实现层和物理通信层,其中协议信道实现层针对不同协议的通信打包和解包,协议抽象层将底层的具体协议与上层的应用隔离开的技术方案,为目前的需求提供了一种稳定的、易描述的、跨平台、跨语言、高效的远程调用方案。
Description
技术领域
本发明涉及计算机网络技术领域,特别是涉及一种远程调用的方法和系统。
背景技术
不同计算机、不同进程的通信是构建软件系统的重要计数,目前的计算机领域中有很多远程过程调用(RPC,Remote Procedure Call Protocol)的相关技术,比如跨平台的Web Service,局限于操作系统特性或语言特性的如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)客户端物理通信层将所接收到的调用应答消息发送给客户端协议信道实现层中的对应协议通道,该对应协议通道对调用应答消息进行解包处理后发送给客户端协议抽象层;客户端协议抽象层将调用应答消息中的应答数据发送给客户端应用层。
本发明的技术方案提供了一种抽象描述远程接口(RpcInterfance)及远程调用消息(RpcMessage)的方式,具体描述如下:服务器提供的远程接口可以包含多个名字唯一的服务接口(即多个服务接口中每个服务器接口的名字都是唯一的),每个服务接口可以包含多个服务方法,每个服务方法包含输入参数类型和输出参数类型。在本发明的一个实施例中,输入参数类型及输出参数类型的定义通过“Protocol Buffers”方式进行,所有接口为强类型声明,在客户端和服务器端均可加入类型检查机制。
在本发明的一个实施例中,远程调用对象的调用请求消息包含如下信息:来源服务名称、来源服务器主机名,目的服务接口名,目的服务方法名,上下文定位标识(ContextUri),调用包体数据和调用请求消息可选项。其中,目的服务接口名,目的服务方法名和上下文定位标识是服务器信息,来源服务名称、来源服务器主机名是客户端信息,调用包体数据是具体的调用数据,调用请求消息可选项是一个标志位,如果该位有效,则表示该消息是调用请求消息。调用应答消息包括:应答码、返回的调用应答数据和调用应道消息可选性。
在Http通信中包体格式如下;
调用请求消息:
POST rpc.do?s=service-name&m=method-name HTTP/1.1
User-Agent:service@computer
Cookie:to=context-uri
Content-Type:multipart/byteranges
Content-Length:content-length-value
<body-data>
上述调用请求消息格式的说明如表1所示:
节点或属性名称 | 功能 |
service-name | 目的服务接口名 |
method-name | 目的服务方法名 |
service@computer | 来源服务名称@来源服务器主机名 |
Context-uri | 上下文定位标识 |
Content-Length-Value | 包体数据长度 |
<body-data> | 调用包体数据 |
表1
调用应答消息格式:
HTTP/1.1 200
Warning:return-code
Content-Length:content-length-value
<body-data>
上述调用应答消息格式的说明如表2所示:
节点或属性名称 | 功能 |
Return-code | 应答消息返回码 |
content-length-value | 应答包体数据长度 |
<body-data> | 应答报文 |
表2
在Tcp协议中调用请求报文的格式如下:
报文整体结构为三段
PacketHeader|RequestHeader(s)|RequestBody(s)
PacketHeader为固定20字节的报文头格式如下,网络字节序
-PacketMark:Int32报文标记
○0xBADBEE00:请求报文
○0xBADBEE01:应答报文
-Option:Int32报文支持选项
○Bit0:是非为批量报文
○Bit1-31:保留
-HeadersLength:int32 Context请求上下文长度
-BodysLength:int32 body请求上下文
-Reserved:int32保留
RequestHeader(s)为Protocol Buffers的序列化结构,如下文描述
message RpcRequestHeader{
required int32FromId=1; //交换后使用缩写的from代替service@computer
required int32 ServiceId=2; //交换后用id代替service.method
required int32 Sequence=3; //事务流水号,由客户端生成,活动事务唯一
requided int32 BodyLength=4; //包体长度:0表示空,1表示默认,len-1为实际长度
optional int32 Option=5; //事务可选项
optional string ContextUri=6; //上下文标识
optional string FromComputer=7;//来源计算机名
optional string FromService=8;//来源服务名
optional string Service=9; //请求服务接口名
optional string Method=10; //请求服务方法名
}
message RpcRequestHeaders{
Repeated RpcRequestHeader Requests;//一个数据包当中可以包含多个请求
}
RequestBody(s)为按照RequestHeader中定义的BodyLength顺序排列好大小的protobuf序列化报文,由应用负责进行反序列化
在Tcp协议中调用应答报文的格式如下:
报文整体结构为三段
PacketHeader|ResponseHeader(s)|ResponseBody(s)
PacketHeader为固定20字节的报文头格式如下,网络字节序
-PacketMark :Int32 报文标记
○0xBADBEE00:请求报文
○0xBADBEE01:应答报文
-Option:Int32报文支持选项
○Bit0:是非为批量报文
○Bit1-31: 保留
-HeadersLength:int32 Context请求上下文长度
-BodysLength:int32 body请求上下文
-Reserved:int32保留
ResponseHeader(s)为Protocol Buffers的序列化结构,如下文描述
Message RpcResponseHeader{
Required int32 sequence=1; //事务流水号,与请求流水号相同
Required int32 ResponseCode=2; //服务器返回错误码
Required int32 BodyLength=3; //包体长度:0表示空,1表示默认,len-1为实际长度
Optional int32 Option=4; //事务可选项
Optional int32 serviceId; //service.method的缩写,用于优化性能
Optional int32 fromId; //service@computer的缩写,可用于优化性能
}
Message ResponseHeaders{
Repeated RpcResponseHeader Responses=1;
}
ResponseBody(s)为按照ResponseHeader中定义的BodyLength顺序排列好大小的报文,由应用负责进行反序列化。
其中,如果ResponseCode不等于OK,则Body中为UTF8格式的错误字符串。
在tcp信道信令中,可以将多个请求合并为一个报文进行发送,此优化经过测试可以大量节省主机进行io输入输出操作的数量,并大幅提高性能。
Pipe管道的通信协议与TCP相同,这里不在复述。
上下文定位标识是一个可以由业务平台内部定制的字符串,可以通过这个字段进行复杂部署结构下的动态路由,此技术在本发明内也可以用于创建智能的业务代理网关服务器。下面的场景描述了一个通过业务代理网关服务器进行路由的例子。
例如:在这个场景中,上下文定位标识被设计为手机号码的格式tel:13900010000,在这个场景中手机号进行目的的定位,比如移动的手机号码会被送到服务器A上,而联通的手机号码会被送到服务器B上,服务器A与服务器B均实现了一个获取用户资料的远程接口,下面的流程描述了一个通过上下文标识进行智能路由的样例:
a、客户端发起获取用户资料的调用,其中将上下文定位标识设置为tel:13900010000,并调用业务代理网关服务器;
b、业务代理网关服务器接受到请求,并通过上下文标识符tel:13900010000判断实际的目的地址为服务器A,负责移动号码的业务;
c、业务网关调用服务器A,并将得到的结果返回给调用方客户端。
下面以使用TCP协议进行调用为例,给出本发明中的客户端与服务器进行远程的时序流程:
A、客户端应用层调用客户端协议抽象层,传入调用服务器地址,服务名,方法名,及调用数据;
B、客户端协议抽象层判断服务器Url地址,并获得具体协议的抽象通道(如:Url为http://10.0.0.1,则为Http通道,Url为tcp://10.0.0.1:8000,则为TCP通道);本例中以TCP通道为例;
C、通过TCP通道创建、填充客户端调用请求消息后将该调用请求消息打包后,再有客户端物理通信层通过网络发送给服务器端;如果没有连接则首先创建连接;
D、服务器端物理通信层将调用请求消息的TCP报文发送给服务器端的TCP通道;
E、服务器端的TCP通道尝试解包,并将TCP报文反序列化为客户端调用请求消息后发送给服务器端协议抽象层;
F、服务器端协议抽象层根据接收到的客户端调用请求消息中的服务接口名,服务方法名,将消息传输给服务器端应用层的对应的应用程序进行处理;
G、服务器端应用程序获得请求数据处理后返回应答数据;
H、服务器端通过TCP通道将应答数据序列化后,沿原连接调用将应答报文发送给客户端;
I、客户端的TCP通道收到应答数据包;
J、客户端的TCP通道尝试解包,并将TCP报文反序列化后得到调用应答消息;
K、客户端尝试匹配应答消息,匹配到后将回调客户端应用程序。
到此完成客户端对服务器端的调用。
本发明提供的实现远程调用方案还可以具备创建双工连接的特性,既不光能从客户端单向调用服务器端,也可以通过客户端创建的双向连接,回调客户端,达到双方向通信的目的,仅TCP协议可以支持双工连接,另外在服务器端可以管理所有创建双工连接的客户端,可以具备选择性的回调,双工连接的创建时序如下文描述:
A、服务器启动一个双工连接服务,并开始监听;
B、客户端启动一个双工客户端应用,并开始尝试连接服务器;
C、连接成功后,客户端可以开始发送注册信令;
D、服务器根据注册命令进行鉴权,鉴权成功后,与客户端建立双工连接,并将客户端加入服务器的会话列表中;
双工会话建立完毕后,服务器程序可以选择特定的客户端,并向客户端发送远程调用信令.
E、服务器端程序向服务器会话管理器查询客户端连接;
F、服务器端程序同个客户端发送远程调用信令;
G、客户端收到后处理并返回。
基于上述实施例,接下给出对本发明中的一种实现远程调用系统的结构。
图2是本发明中的一种实现远程调用的系统的组成结构示意图。如图2所示,该系统包括客户端21和服务器22;其中,客户端包括:客户端应用层模块211、客户端协议抽象层模块212、客户端协议信道实现层模块213和客户端物理通信层模块214;服务器包括:服务器端应用层模块221、服务器端协议抽象层模块222、服务器端协议信道实现层模块223和服务器端物理通信层模块224;其中客户端协议信道实现层模块213和服务器端协议信道实现层模块223分别包括多个协议通道子模块;
客户端应用层模块211,用于调用客户端协议抽象层模块212,向客户端协议抽象层模块212传入目的服务器信息和调用数据形成调用请求消息;用于接收客户端协议抽象层模块212返回的应答数据;
客户端协议抽象层模块212,用于根据服务器信息中的目的服务器地址,从客户端协议信道实现层模块213所包含的多个协议通道子模块中选择一个协议通道子模块,将所选择的调用请求消息发送给所选择的协议通道子模块;用于将所述协议通道子模块返回的调用应答消息中的应答数据发送给客户端应用层模块211;
客户端协议信道实现层模块213中的协议通道子模块,用于在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通信层模块214,用于将客户端物理通信层模214块返回的调用应答消息进行解包处理后发送给客户端协议抽象层模块212;
客户端物理通信层模块214,用于将所述调用请求消息通过网络发送给服务器端;用于将服务器端返回的调用应答消息发送给客户端协议信道实现层模块213中的对应协议通道子模块;
服务器端物理通信层模块224,用于将所接收到的调用请求消息发送给服务器端协议信道实现层模块223中的对应协议信道子模块;用于将对应协议信道子模块返回的调用应答消息沿原连接发送给客户端;
服务器端协议信道实现层模块223中的对应协议信道子模块,用于对调用请求消息进行解包处理后发送给服务器端协议抽象层模块222,并用于对服务器端协议抽象层模块222返回的调用应答消息进行打包处理后发送给服务器端物理通信层模块224;
服务器端协议抽象层模块222,用于将调用请求消息中的目的服务器信息和调用数据发送给服务器端应用层模块221;用于对服务器端应用层模块221返回的应答数据进行封装,形成调用应答消息,并发送给对应的协议通道子模块;
服务器端应用层模块221,用于根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传入服务器端协议抽象层模块222。
所述目的服务器信息包括:目的服务接口名、目的服务方法名;目的服务器提供的远程接包含多个名字唯一的服务接口,每个服务接口包含多个服务方法;
所述客户端信息包括:来源服务名称和来源服务器主机名称;
协议信道实现层模块(213,223)包括:传输控制协议TCP通道子模块、超文本传输协议HTTP通道子模块和管道通信协议通道子模块。
图2所述的系统还可以包括业务代理网关服务器(图2中未画出);所述目的服务器信息还包括:上下文定为标识;所述客户端物理通信层模块214将所述调用请求消息发送给业务代理网关服务器;业务代理网关服务器根据所述调用请求消息中的上下文定为标识,将所述调用请求消息路由到目的服务器。
在图2所示的系统中,服务器进一步用于与客户端建立双工连接,将客户端加入服务器的会话列表中;服务器进一步用于从会话列表中选择特定的客户端,并向该客户端发送远程调用信令;客户端接收远程调用信令并处理。
所述服务器与客户端建立双工连接包括:服务器启动一个双工连接服务,并开始监听;客户端启动一个双工客户端应用,并开始连接服务器;连接成功后,客户端向服务器发送注册命令;服务器根据注册命令进行鉴权成功后,与客户端建立双工连接。
由上述可见,本发明这种客户端和服务器端均从上至下分为四层:应用层、协议抽象层、协议信道实现层和物理通信层,其中协议信道实现层针对不同协议的通信打包和解包,协议抽象层将地层的具体协议与上层的应用隔离开的技术方案,为目前的需求提供了一种稳定的、易描述的、跨平台、跨语言、高效的远程调用方案。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种实现远程调用的方法,其特征在于,客户端和服务器端均从上至下分为四层:应用层、协议抽象层、协议信道实现层和物理通信层;其中,协议信道实现层包含多种协议通道,则客户端远程调用服务器的过程包括:
客户端应用层调用客户端协议抽象层,向客户端协议抽象层传入目的服务器信息和调用数据形成调用请求消息;客户端协议抽象层根据服务器信息中的目的服务器地址,从客户端协议信道实现层所包含的多个协议通道中选择一个协议通道;所述被选择的协议通道在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通信层;客户端物理通信层将所述调用请求消息通过网络发送给服务器端;
服务器端物理通信层将所接收到的调用请求消息发送给服务器端对应的协议信道;所述对应的协议信道对调用请求消息进行解包处理后发送给服务器端协议抽象层;服务器端协议抽象层将调用请求消息中的目的服务器信息和调用数据发送给服务器端应用层;服务器端应用层根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传入服务器端协议抽象层;服务器端协议抽象层,对应答数据进行封装,形成调用应答消息,并发送给服务器端对应的协议通道;服务器端的对应协议通道将调用应答消息进行打包处理后,再由服务器端的物理通信层将调用应答消息沿原连接发送给客户端;
客户端物理通信层将所接收到的调用应答消息发送给客户端协议信道实现层中的对应协议通道,该对应协议通道对调用应答消息进行解包处理后发送给客户端协议抽象层;客户端协议抽象层将调用应答消息中的应答数据发送给客户端应用层。
2.根据权利要求1所述的方法,其特征在于,
所述目的服务器信息包括:目的服务接口名、目的服务方法名;目的服务器提供的远程接口中包含多个名字唯一的服务接口,每个服务接口包含多个服务方法;
所述客户端信息包括:来源服务名称和来源服务器主机名称;
协议信道实现层包含:传输控制协议TCP通道、超文本传输协议HTTP通道和管道通信协议通道。
3.根据权利要求1所述的方法,其特征在于,
所述目的服务器信息还包括:上下文定为标识;
客户端物理通信层将所述调用请求消息通过网络发送给服务器端包括:客户端物理通信层将所述调用请求消息发送给业务代理网关服务器;业务代理网关服务器根据所述调用请求消息中的上下文定为标识,将所述调用请求消息路由到目的服务器。
4.根据权利要求1至3中任一项所述的方法,其特征在于,该方法进一步包括:
服务器与客户端建立双工连接,将客户端加入服务器的会话列表中;
服务器从会话列表中选择特定的客户端,并向该客户端发送远程调用信令;客户端接收远程调用信令并处理。
5.根据权利要求4所述的方法,其特征在于,所述服务器与客户端建立双工连接包括:
服务器启动一个双工连接服务,并开始监听;
客户端启动一个客户端应用,并开始连接服务器;
连接成功后,客户端向服务器发送注册命令;
服务器根据注册命令进行鉴权,鉴权成功后,与客户端建立双工连接。
6.一种实现远程调用的系统,其特征在于,该系统包括客户端和服务器;其中,客户端包括:客户端应用层模块、客户端协议抽象层模块、客户端协议信道实现层模块和客户端物理通信层模块;服务器包括:服务器端应用层模块、服务器端协议抽象层模块、服务器端协议信道实现层模块和服务器端物理通信层模块;其中客户端协议信道实现层模块和服务器端协议信道实现层模块分别包括多个协议通道子模块;
客户端应用层模块,用于调用客户端协议抽象层模块,向客户端协议抽象层模块传入目的服务器信息和调用数据形成调用请求消息;用于接收客户端协议抽象层模块返回的应答数据;
客户端协议抽象层模块,用于根据服务器信息中的目的服务器地址,从客户端协议信道实现层模块所包含的多个协议通道子模块中选择一个协议通道子模块,将所选择的调用请求消息发送给所选择的协议通道子模块;用于将所述协议通道子模块返回的调用应答消息中的应答数据发送给客户端应用层模块;
客户端协议信道实现层模块中的协议通道子模块,用于在所述调用请求消息中填充客户端信息,并进行打包处理后发送给客户端物理通信层模块,用于将客户端物理通信层模块返回的调用应答消息进行解包处理后发送给客户端协议抽象层模块;
客户端物理通信层模块,用于将所述调用请求消息通过网络发送给服务器端;用于将服务器端返回的调用应答消息发送给客户端协议信道实现层模块中的对应协议通道子模块;
服务器端物理通信层模块,用于将所接收到的调用请求消息发送给服务器端协议信道实现层模块中的对应协议信道子模块;用于将对应协议信道子模块返回的调用应答消息沿原连接发送给客户端;
服务器端协议信道实现层模块中的对应协议信道子模块,用于对调用请求消息进行解包处理后发送给服务器端协议抽象层模块,并用于对服务器端协议抽象层模块返回的调用应答消息进行打包处理后发送给服务器端物理通信层模块;
服务器端协议抽象层模块,用于将调用请求消息中的目的服务器信息和调用数据发送给服务器端应用层模块;用于对服务器端应用层模块返回的应答数据进行封装,形成调用应答消息,并发送给对应的协议通道子模块;
服务器端应用层模块,用于根据所接收的信息实现服务器端应用,生成应答数据,将应答数据传入服务器端协议抽象层模块。
7.根据权利要求6所述的系统,其特征在于,
所述目的服务器信息包括:目的服务接口名、目的服务方法名;目的服务器提供的远程接口中包含多个名字唯一的服务接口,每个服务接口包含多个服务方法;
所述客户端信息包括:来源服务名称和来源服务器主机名称;
协议信道实现层模块包括:传输控制协议TCP通道子模块、超文本传输协议HTTP通道子模块和管道通信协议通道子模块。
8.根据权利要求6所述的系统,其特征在于,该系统还包括业务代理网关服务器;
所述目的服务器信息还包括:上下文定为标识;
所述客户端物理通信层模块将所述调用请求消息发送给业务代理网关服务器;业务代理网关服务器根据所述调用请求消息中的上下文定为标识,将所述调用请求消息路由到目的服务器。
9.根据权利要求6至8中任一项所述的系统,其特征在于,
服务器进一步用于与客户端建立双工连接,将客户端加入服务器的会话列表中;
服务器进一步用于从会话列表中选择特定的客户端,并向该客户端发送远程调用信令;客户端接收远程调用信令并处理。
10.根据权利要求9所述的系统,其特征在于,所述服务器与客户端建立双工连接包括:
服务器启动一个双工连接服务,并开始监听;
客户端启动一个客户端应用,并开始连接服务器;
连接成功后,客户端向服务器发送注册命令;
服务器根据注册命令进行鉴权,鉴权成功后,与客户端建立双工连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010611926.6A CN102098296B (zh) | 2010-12-29 | 2010-12-29 | 一种实现远程调用的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010611926.6A CN102098296B (zh) | 2010-12-29 | 2010-12-29 | 一种实现远程调用的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102098296A true CN102098296A (zh) | 2011-06-15 |
CN102098296B CN102098296B (zh) | 2014-08-06 |
Family
ID=44131160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010611926.6A Active CN102098296B (zh) | 2010-12-29 | 2010-12-29 | 一种实现远程调用的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102098296B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780613A (zh) * | 2012-06-19 | 2012-11-14 | 瑞斯康达科技发展股份有限公司 | 一种分布式设备板间通信的方法与装置 |
CN104270470A (zh) * | 2014-10-24 | 2015-01-07 | 杭州高达软件系统股份有限公司 | 一种远程服务调用方法、装置及系统 |
CN104348826A (zh) * | 2013-07-26 | 2015-02-11 | 中兴通讯股份有限公司 | 会话管理方法、应用功能实体、策略服务器和协议转换器 |
CN104951275A (zh) * | 2015-06-18 | 2015-09-30 | 湖北盛天网络技术股份有限公司 | 计算机指令数据的处理方法和系统 |
CN105721512A (zh) * | 2016-05-06 | 2016-06-29 | 深圳前海大数点科技有限公司 | 一种远程过程调用系统及其方法 |
CN105827672A (zh) * | 2015-01-05 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 远程调用方法及装置 |
CN103780679B (zh) * | 2014-01-03 | 2016-10-19 | 电子科技大学 | 基于http协议的长延时远程调用方法 |
CN107894901A (zh) * | 2017-11-01 | 2018-04-10 | 福建新大陆支付技术有限公司 | 一种传统金融应用向智能终端平台迁移的方法及系统 |
CN108540477A (zh) * | 2018-04-13 | 2018-09-14 | 腾讯科技(成都)有限公司 | 数据通信的方法及相关设备 |
CN109660573A (zh) * | 2017-10-10 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
CN109753370A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种低时延、高吞吐的远程过程调用方法 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN110032458A (zh) * | 2019-04-12 | 2019-07-19 | 重庆天蓬网络有限公司 | 一种php跨语言统一调用系统 |
CN111193716A (zh) * | 2019-12-11 | 2020-05-22 | 未鲲(上海)科技服务有限公司 | 业务数据调用方法、装置、计算机设备和存储介质 |
CN111917737A (zh) * | 2020-07-14 | 2020-11-10 | 北京明略软件系统有限公司 | 一种跨网rpc调用系统及方法 |
CN112134915A (zh) * | 2020-06-29 | 2020-12-25 | 上海金融期货信息技术有限公司 | 一种应用层协议解耦合的通用网络处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040052273A1 (en) * | 2002-09-17 | 2004-03-18 | Jeyhan Karaoguz | System and method for providing a super channel in a multi-band multi-protocol hybrid wired/wireless network |
CN1574836A (zh) * | 2003-05-23 | 2005-02-02 | 阿尔卡特公司 | 用于在电信网络中建立网络元件间的通用协议关系的方法 |
CN101409717A (zh) * | 2008-12-01 | 2009-04-15 | 用友软件股份有限公司 | 协议无关的soa系统和业务处理方法 |
CN101605123A (zh) * | 2008-06-11 | 2009-12-16 | 中兴通讯股份有限公司 | 一种scsi分布式通信模型 |
-
2010
- 2010-12-29 CN CN201010611926.6A patent/CN102098296B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040052273A1 (en) * | 2002-09-17 | 2004-03-18 | Jeyhan Karaoguz | System and method for providing a super channel in a multi-band multi-protocol hybrid wired/wireless network |
CN1574836A (zh) * | 2003-05-23 | 2005-02-02 | 阿尔卡特公司 | 用于在电信网络中建立网络元件间的通用协议关系的方法 |
CN101605123A (zh) * | 2008-06-11 | 2009-12-16 | 中兴通讯股份有限公司 | 一种scsi分布式通信模型 |
CN101409717A (zh) * | 2008-12-01 | 2009-04-15 | 用友软件股份有限公司 | 协议无关的soa系统和业务处理方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780613B (zh) * | 2012-06-19 | 2015-12-09 | 瑞斯康达科技发展股份有限公司 | 一种分布式设备板间通信的方法与装置 |
CN102780613A (zh) * | 2012-06-19 | 2012-11-14 | 瑞斯康达科技发展股份有限公司 | 一种分布式设备板间通信的方法与装置 |
CN104348826A (zh) * | 2013-07-26 | 2015-02-11 | 中兴通讯股份有限公司 | 会话管理方法、应用功能实体、策略服务器和协议转换器 |
CN103780679B (zh) * | 2014-01-03 | 2016-10-19 | 电子科技大学 | 基于http协议的长延时远程调用方法 |
CN104270470A (zh) * | 2014-10-24 | 2015-01-07 | 杭州高达软件系统股份有限公司 | 一种远程服务调用方法、装置及系统 |
CN105827672A (zh) * | 2015-01-05 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 远程调用方法及装置 |
CN104951275A (zh) * | 2015-06-18 | 2015-09-30 | 湖北盛天网络技术股份有限公司 | 计算机指令数据的处理方法和系统 |
CN104951275B (zh) * | 2015-06-18 | 2017-06-30 | 湖北盛天网络技术股份有限公司 | 计算机指令数据的处理方法和系统 |
CN105721512B (zh) * | 2016-05-06 | 2018-11-02 | 深圳大数点科技有限公司 | 一种采用远程过程调用系统的方法 |
CN105721512A (zh) * | 2016-05-06 | 2016-06-29 | 深圳前海大数点科技有限公司 | 一种远程过程调用系统及其方法 |
CN109660573A (zh) * | 2017-10-10 | 2019-04-19 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
CN109660573B (zh) * | 2017-10-10 | 2021-10-15 | 北京京东尚科信息技术有限公司 | 数据传输方法和装置 |
CN107894901A (zh) * | 2017-11-01 | 2018-04-10 | 福建新大陆支付技术有限公司 | 一种传统金融应用向智能终端平台迁移的方法及系统 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN108540477A (zh) * | 2018-04-13 | 2018-09-14 | 腾讯科技(成都)有限公司 | 数据通信的方法及相关设备 |
CN109753370A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种低时延、高吞吐的远程过程调用方法 |
CN110032458A (zh) * | 2019-04-12 | 2019-07-19 | 重庆天蓬网络有限公司 | 一种php跨语言统一调用系统 |
CN110032458B (zh) * | 2019-04-12 | 2020-07-10 | 重庆天蓬网络有限公司 | 一种php跨语言统一调用系统 |
CN111193716A (zh) * | 2019-12-11 | 2020-05-22 | 未鲲(上海)科技服务有限公司 | 业务数据调用方法、装置、计算机设备和存储介质 |
CN111193716B (zh) * | 2019-12-11 | 2023-04-07 | 未鲲(上海)科技服务有限公司 | 业务数据调用方法、装置、计算机设备和存储介质 |
CN112134915A (zh) * | 2020-06-29 | 2020-12-25 | 上海金融期货信息技术有限公司 | 一种应用层协议解耦合的通用网络处理系统 |
CN112134915B (zh) * | 2020-06-29 | 2022-10-14 | 上海金融期货信息技术有限公司 | 一种应用层协议解耦合的通用网络处理系统 |
CN111917737A (zh) * | 2020-07-14 | 2020-11-10 | 北京明略软件系统有限公司 | 一种跨网rpc调用系统及方法 |
CN111917737B (zh) * | 2020-07-14 | 2023-01-31 | 北京明略软件系统有限公司 | 一种跨网rpc调用系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102098296B (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102098296B (zh) | 一种实现远程调用的方法和系统 | |
CN1327670C (zh) | 通信控制方法、通信方法、服务器设备、终端装置、中继设备和通信系统 | |
CN100407675C (zh) | 建立协作通信的方法和系统 | |
CN101366257B (zh) | 服务链接 | |
CN108200165B (zh) | 请求传输系统、方法、装置及存储介质 | |
US20060039401A1 (en) | System and method for communicating asynchronously with synchronous web services using a mediator service | |
US20060234730A1 (en) | System and method for accessing multiple data sources by mobile applications | |
US7110763B2 (en) | Graphical proxy for less capable terminals | |
CN101322385A (zh) | 对媒体服务器中的分布式媒体资源进行负载平衡和切换 | |
US20050071419A1 (en) | System, apparatus, and method for providing Web services using wireless push | |
CN103188260A (zh) | 在网关使用基于ip的网络实现ccn的方法及网关 | |
CN101262478A (zh) | 穿越网络地址转换nat的方法和设备 | |
CN101297537A (zh) | 电话和网络服务的协调 | |
CN102413147B (zh) | 代理服务器 | |
CN102546319B (zh) | 物联网终端互通的方法及系统 | |
CN105376225A (zh) | 一种软件服务化的方法及装置 | |
EP1251671B1 (en) | A method of providing a proxy server based service to a communications device on a network | |
CN102710765A (zh) | 一种cdn服务器实现透明代理的方法、装置及系统 | |
CN108446105A (zh) | 一种轻量级API Server开发框架及开发方法 | |
US9060256B2 (en) | Generic USSD centre for network applications and services | |
CN102694770A (zh) | 一种业务平台中多类型资源管理的系统及方法 | |
FI110225B (fi) | Menetelmä interaktiivisten palveluiden tuottamiseksi | |
JP2003516653A (ja) | ネットワークと移動電話との間のsimツールの使用 | |
CN101356754A (zh) | 用于减少移动订户会话中无线数据事务处理的轻量级通信协议 | |
WO2017162071A1 (zh) | 网络节点及实现网络节点间通信的方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building A block 5 layer Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |