zoukankan      html  css  js  c++  java
  • 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):

    1. Client向ClientStub发送请求(Call)。
    2. ClientStub对请求参数进行封包(也叫Marshalling),发出系统调用,OS向S端发送消息。
    3. S端接收到消息后,把封包消息传递给ServerStub。ServerStub解包(UnMarshalling)。
    4. 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取代

     Refer

    http://en.wikipedia.org/wiki/Remote_procedure_call
    http://en.wikipedia.org/wiki/Stub_(distributed_computing)

  • 相关阅读:
    rpcbind禁用不了,111端口无法释放?
    python3 pexpect 自动交互修改linux系统密码
    pip将包安装到指定位置
    使用openssl对文件进行加密解密
    james-2.3.2.1发邮件慢,不能多线程同时发
    java指令执行一个class文件并指定依赖包的路径
    ltib for imx280 tips
    使用net-snmp的snmptranslate命令验证MIB文件
    嵌入式linux去掉开机进度条,更换背景,换企鹅logo
    使用cppcheck对C代码进行静态检查
  • 原文地址:https://www.cnblogs.com/caca/p/3573687.html
Copyright © 2011-2022 走看看