zoukankan      html  css  js  c++  java
  • RPC的原理总结

    一.RPC的引入

    早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来。假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能。这不是整人么?于是就出现了IPC(Inter-process communication,单机中运行的进程之间的相互通信)。OK,现在A既然有了画图的功能,B就调用A进程上的画图功能好了,程序员终于可以偷下懒了。
    到了网络时代,大家的电脑都连起来了。以前程序只能调用自己电脑上的进程,能不能调用其他机器上的进程呢?于是就程序员就把IPC扩展到网络上,这就是RPC(远程过程调用)了。现在不仅单机上的进程可以相互通信,多机器中的进程也可以相互通信了。
    要知道实现RPC很麻烦呀,什么多线程、什么Socket、什么I/O,都是让咱们普通程序员很头疼的事情。于是就有牛人开发出RPC框架(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。
    通过以上内容,现在可以定义RPC框架的概念了。简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。

    二.RPC进一步解释

    RPCRemote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCPUDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

    RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

    三.RPC原理图和对应的步骤:

    运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

    1.调用客户端句柄;执行传送参数

    2.调用本地系统内核发送网络消息

    3.消息传送到远程主机

    4.服务器句柄得到消息并取得参数

    5.执行远程过程

    6.执行的过程将结果返回服务器句柄

    7.服务器句柄返回结果,调用远程系统内核

    8.消息传回本地主机

    9.客户句柄由内核接收消息

    10.客户接收句柄返回的数据

    三.RPC的代码实现:

     暂时不贴了。。。。。。。回头有时间再弄。。。

     

  • 相关阅读:
    WTS_INFO_CLASS enumeration
    奇淫怪巧之给Delphi的PrintDialog增加一个页码选定范围打印的Edit
    Delphi的参数传递约定以及动态参数个数(转载笔记)
    C++中的模板那点事
    那些年我们一起学过的“排序算法”
    STL中的set容器的一点总结
    设计模式之备忘录模式(Memento)
    小程序员的趣味题(一)
    STL中的vector容器的一点总结
    STL中的list容器的一点总结
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/7505891.html
Copyright © 2011-2022 走看看