博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是RPC?RPC与Stub简述
阅读量:4125 次
发布时间:2019-05-25

本文共 981 字,大约阅读时间需要 3 分钟。

什么是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取代

转载地址:http://nrhpi.baihongyu.com/

你可能感兴趣的文章
linux进程和线程的性能差异(猜)
查看>>
透视视频通信发展新趋势
查看>>
IT领域2014年发展趋势
查看>>
des中key不是那么好算的
查看>>
Torch Fails to build against CUDA 10
查看>>
linux LVS负载均衡原理 NAT DR TUN FULLNAT 模式
查看>>
LVS 负载均衡 DR模式环境搭建
查看>>
Exsi上ubuntu虚拟机显卡tesla p100 驱动和cuda踩坑。
查看>>
MPI(Message-Passing Interface)实现奇偶排序
查看>>
Centos 7 从零搭建nginx+tomcat集群
查看>>
Strust2 搭建一个简单CRUD(增、查、更、删)的操作网页
查看>>
Struts2+Hibernate实现增、删、查、改的简单网页(连接数据库)
查看>>
linpack基准测试(HPL+MKL+IMPI)安装
查看>>
Ubuntu Server(18.04)开启路由转发搭建软路由
查看>>
浅谈Bash shell的几种运行模式和cron环境变量导致command not found
查看>>
Linux bash的快捷键 提高效率
查看>>
ubuntu 16.04 Titanxp 安装cuda10.0 cudnn7.6 环境
查看>>
git使用教程
查看>>
linux gcc编译环境变量和动态库路径问题浅析以及LD_LIBRARY_PATH和LIBRARY_PATH区别
查看>>
Ubuntu 16.04 编译安装opencv 3.4.6过程和 anaconda3/lib/libtiff.so.5: undefined reference to `ZSTD_freeCStre
查看>>