什么是RPC?RPC与Stub简述

RPC(远程过程调用)是进程间通信的一种技术,常用于不同机器间的通信。它允许客户端调用服务器上的子程序或方法,同步或异步执行。RPC过程涉及ClientStub和ServerStub,通过封包和解包参数进行通信。常见的RPC实现包括JavaRMI、XML-RPC、JSON-RPC、SOAP等。Stub负责参数转换,IDL如RPCGEN用于生成接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是RPC

在某种意义上,WebService、REST均是RPC的实现,那么RPC的发展过程如何呢?本文参考了wikipedia,对RPC做一下简要摘记。

RPC(RemoteProcedureCall),是进程间通信(IPC,Inter-Process Communication)的一种技术,一般指不同机器上的进程间通信。在采用C等古老语言编程的时候,RPC被称作了对S端的“子程序”的调用,所以称“过程调用”。在OOP出现后,RPC也可以称为远程方法调用(RemoteMethodInvocation),或者远程调用(RemoteInvocation)。

RPC过程可以是同步的,也可以是异步的。同步方式:C端向S端发送请求,阻塞等待;S端执行一段子程序,发送响应;C端继续执行;异步方式,比如XHTTP调用。

RPC的调用过程(Stub这个术语应该是借鉴了JavaRMI):

Client向ClientStub发送请求(Call)。
ClientStub对请求参数进行封包(也叫Marshalling),发出系统调用,OS向S端发送消息。
S端接收到消息后,把封包消息传递给ServerStub。ServerStub解包(UnMarshalling)。
ServerStub调用S端的子程序。处理完毕后,以同样的方式向C端发送结果。
注:ServerStub又叫Skeleton。

**

什么是Stub?

**

Stub是一段代码,用来转换RPC过程中传递的参数。处理内容包括不同OS之间的大小端问题。另外,Client端一般叫Stub,Server端一般叫Skeleton。

生产方式:1)手动生成,比较麻烦;2)自动生成,使用IDL(InterfaceDescriptionLanguate),定义C/S的接口。

交互机制标准:一般采用IDL,生成IDL的工具 RPCGEN()。

**

RPC相关实现方式

**

JavaRMI
XML-RPC,XML+HTTP来进行机器之间的调用
JSON-RPC
SOAP,XML-RPC的升级版
Facebook Thrift
CORBA
AMF,AdobeFlex
Libevent,是一个用于构建RPC Server和Client的框架。
WCF,来自微软
.net Remoting,逐步被WCF取代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值