国家信息中心夏道藏24/12/2224/12/2211消息传递与过程调用的类似性国家信息中心夏道藏24/12/2224/12/2222远程过程调用send/receive/reply这种通信形式与大多数传统程序设计语言中的过程调用非常类似,见图,其中,“调用者/源”先挂起,然后把“参数/消息”传递给“被调用者/宿”,让它们去执行相应的任务;当任务执行完后返回时,它(们)再把作为结果的“参数/消息”回送给“调用者/源”,后者再继续执行下去
国家信息中心夏道藏24/12/2224/12/2233远程过程调用远程过程调用(RemoteProcedureCall简称RPC)是一个会晤层协议
虽然这种描述不完全对,因为,允许存在与利用RPC实现的应用层协议某些混合
RPC原理原先由Xerox的研究人员所开发
国家信息中心夏道藏24/12/2224/12/2244远程过程调用为了实现NFS,Sun公司的工程师开发了他们自己的RPC技术,通常称为SunRPC或ONC/RPC
ONC/RPC不仅用于NFS的实现,也用于许多其它网络应用
存在和ONC/RPC不同的其它RPC技术,例如DECRPC
虽然它们都遵从同样的概念途径,但是它们有不同的内部结构,因此,无互操作性
国家信息中心夏道藏24/12/2224/12/2255RPC和本地过程调用的比较远程过程调用本地过程调用由客户程序激活
请求参量被打成数据包
调用模块执行一个过程调用;由编译程序生成的代码把参量写到栈中
发送请求和在服务器程序中的参量拆包
在服务器上参量被拆包并且传递给服务器的子过程
参量从栈装载到子过程的局部变量或寄存器
在服务器上执行请求(过程)
执行子过程代码
把结果打包和返回给客户
结果和子过程的返回值被存贮在寄存器中
由客户把结果拆包,继续正常的程序遵照执行
调用的过程访问数据
国家信息中心夏道藏