远程过程调用 Remote Procedure Call
进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信(IPC)。
本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。
远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNIX操作系统的计算机中。
通过IPC和RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把远程过程调用与其它技术如消息传递一道,作为系统间通信的一种机制。客户机执行自己的任务,但靠服务器提供后端文件服务。RPC为客户机提供向后端服务器申请服务的通信机制,如图R-4所示。如果你把客户机/服务器应用程序想作是一个分离的程序,服务器能运行数据访问部分,因为它离数据最近,客户机能运行数据表示和与用户交互的前端部分。这样,远程过程调用可看作是把分割的程序通过网络重组的部件。LPC有时也称耦合(Coupling)机制。
用这种方式分割程序,当用户要访问数据时就无需每次拷贝整个数据库或它的大部分程序到用户系统。其实,服务器只处理请求,甚至只执行一些数据计算,把得出的结果再发送给用户。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个用户可同时访问相同的数据。
分布式计算环境是由一个通信系统——网络连接的计算机集群。很容易把这个网络看成一个计算平台,若是对等方式,其中任何一台计算机都能成为客户机或服务器。一些处理任务可被分成独立运行程序在不同的网络计算机上并行处理,而独立的程序被交给最适合这个任务的计算机处理。这种策略可利用计算机空闲资源,提高网络的效益。一个典型的企业网包括许多运行着不同操作系统的异构计算机系统。
随着企业网的产生,开发商必须编制可在各种计算机和网络通信协议中都能运行的程序。现在人们正努力使得远程过程调用独立,这意味着开发商就不用考虑底层的网络和网络上数据传输所用的协议,下面介绍RPC在开放式软件基金(OSF)的分布式计算环境(DCC)中实现的相关方法。RPC工作于多种分布式计算环境。
SunSoft的开放网络计算(ONC)的远过程调用/外部数据表示(RPC/XDR)协议被广泛采用。在三百一十万个运行网络文件系统(NFS)的系统中,有二百八十万个使用ONCRPC库,并在分布式应用中作为客户机或服务器。ONCRPC被IBM的所有操作系统所支持(除了OS/400)。UNIX系统实验室把RPC/XDR当作是UNIX System V Release 4的一个标准部分。Novell支持下一代ONC+传输自立远程过程调用(TI-RPC)技术.TI-RPC 使用运输层接口(TLI)实现传输自立。TLI提供了一种访问面向连接或非连接传输服务的通用方法(这在“STERAMS环境”中有所叙述)。
Open Software Foundation(OSF)RPC 开放软件基金会(OSF)的RPC
RPC工具提供了一种编程语言和编译器,它们使用可看作是本地过程的可运行于客户机和服务器上的模块开发分布式应用程序。运行时设施(run-timefacility)使得分布式应用程序能在多机种异构系统上运行,这样使得底层体系结构和运输协议对于应用程序是透明的。
程序员用接口定义语言(IDL)建立接口定义(interface definition)。IDL是程序员用来设计远程运行的过程的工具。IDL编译器把IDL接口定义转换成与客户机和服务器相连的占位程序(stub)。客户机上的占位程序可加入到服务器的过程,而服务器上的占位程序也可加入到客户机过程。位于客户机服务器的RPC运行时设施与占位程序合作,来提供RPC操作。
异构环境中使用RPC的一个问题在于,不同的机器有不同的数据表示,OSFRPC通过具有调用机器的基本数据表示的特征调用来解决这个问题。当收到调用时,若根据特征知道两台机器数据表示不同的话,接收器就进行数据转换。
RPC运行时设施提供把客户机请求传送给服务器和在网上发送和接收响应的功能。DCERPC运行时设施也和网络上其它DCE服务相互作用,这些DCE服务有命名、安全和定时服务。运行时设施有下列特征:
可在多种网络上运行。开发者无需为每个网络编写特定的应用程序。
提供客户机或服务器或网络上的故障恢复。它支持文件系统、数据库和其它传输可变长数据的服务。
提供独立于任何一个目录服务的基于名字定位服务器的方法。
提供安全工具的接口,以防RPC通信遭受破坏。安全服务保证机密信息的保密性和提供鉴别来保护通信完备性。
支持网上并发或并行处理的多线程调度,于是一个应用程序就能同时执行多个操作
提供多供应商提供的系统环境的可移植性和相互操作性。
相关推荐
### 为什么说要搞定微服务架构,先搞定RPC框架 #### 一、需求缘起与背景 服务化作为现代软件架构的重要组成部分,旨在通过分解大型应用程序为一系列小而独立的服务来提升开发效率、可维护性和扩展性。在这个过程中...
ONC RPC,全称为Open Network Computing Remote Procedure Call,是一种基于Internet协议栈的远程过程调用标准,它允许程序在不同的网络计算机之间进行通信,就像它们在同一台机器上运行一样。这个"ONCRPC.rar_ONC...
4. **序列化与反序列化**:为了在网络中传输数据,RPC需要将对象转换成字节流(序列化),服务端收到后将其还原为对象(反序列化)。 5. **网络通信**:RPC框架负责建立和维护客户端与服务端之间的网络连接,传输...
6. **序列化与反序列化**: JSON-RPC协议要求将Java对象转换为JSON格式进行传输,同时也要能将接收到的JSON数据解析为Java对象。Java提供了多种库来实现这一功能,如Gson、Jackson和org.json等。 7. **框架支持**: ...
在实际使用中,用户可能需要根据不同的遥感图像数据,加载对应的RPC文件或指定GCPs,通过调用这个程序完成校正。由于GDAL库跨平台的特性,该程序不仅可以运行在Windows上,还可以应用于Linux、macOS等其他操作系统,...
### 使用RPC机制将本地调用转换为远程调用 #### 概述 远程过程调用(RPC, Remote Procedure Call)是一种通信协议,它允许在一台计算机上的程序调用另一台计算机上的子程序或函数,而无需程序员明确了解底层通信...
JSON-RPC 使用手册详细解析 1. **JSON-RPC 简介** JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,主要用于跨平台的数据交互。它允许客户端通过JSON(JavaScript ...
本项目是基于Netty 4.0实现的自定义RPC通信框架,旨在为Java开发者提供一种高效、灵活的远程服务调用解决方案。 首先,我们来深入理解Netty的基本概念。Netty的核心是其NIO(非阻塞I/O)模型,它使用了Reactor模式...
例如,`jsonrpc-c`库就包含了这样的功能,可以将C结构体转换为JSON字符串,反之亦然。 2. **协议封装**:为了在网络上传输RPC请求,需要将JSON数据封装在一个合适的协议中。常见的有HTTP、TCP/IP或者UDP等。在C语言...
2. **编译接口**:通过MIDL工具将.idl文件转换为C++头文件和库文件,这些文件包含了客户端和服务端使用的代理和存根代码。 3. **编写服务器端**:使用生成的C++头文件创建服务器端代码,注册服务,并实现接口中定义...
这就需要序列化技术将Java对象转化为字节流,而接收方则通过反序列化将字节流还原为对象。 3. **网络通信**:在Java中,我们可以使用Socket编程或者HTTP协议来实现网络通信。Socket提供了低级别的网络通信接口,而...
NFS-RPC结合了NFS(网络文件系统)的文件操作功能与RPC的远程调用能力,为用户提供透明的、高性能的跨网络文件访问。 NFS-RPC的核心设计原则是简洁和高效。在NFS-RPC中,服务器端提供文件服务,客户端则通过RPC协议...
ENVI提供了强大的影像处理功能,包括图像增强、分类、校正等,其中正射校正是一个重要的环节,用于将倾斜拍摄的卫星或航空影像转换为等比例的正射影像,消除地形和传感器角度带来的失真,提高数据的准确性。...
- **基于协议缓冲区的RPC**:如gRPC,使用Google的protobuf定义服务接口和数据结构,提供高性能、低延迟的RPC解决方案。 **5. RPC的应用场景** - **分布式微服务**:在微服务架构中,不同服务间的通信大量依赖于RPC...
1. **客户端**:客户端拥有想要调用的远程方法的引用,通过RPC协议将请求发送到服务器。这个请求包含方法名、参数等信息。 2. **序列化**:客户端将请求数据转换为可传输的格式,例如JSON或PHP序列化字符串。 3. *...
本篇将详细讲解如何使用socket、反射和序列化等技术来实现一个简单的RPC框架。 首先,让我们了解RPC的基本原理。在RPC模型中,客户端(Client)发起一个函数调用请求,这个请求包含了目标函数的名称和参数。RPC框架...
- **RPC/Encoded**:此样式将方法名映射为SOAP消息中的根元素,同时在SOAP消息中编码参数类型信息。WSDL示例中展示了`<soap:body use="encoded" ...>`,表示使用编码方式。这意味着服务调用看起来像远程过程调用,...
- 客户端:发起RPC调用请求的程序,它定义了要调用的服务和参数。 - 服务端:提供被调用服务的程序,接收并处理客户端的请求。 - 通信协议:RPC框架负责将调用请求转化为网络数据包,通过网络发送到服务器,并将...
NettyRPC可能使用如Java自带的序列化、Protobuf、JSON等序列化方式。选择合适的序列化工具对性能和兼容性有直接影响。 4. **服务注册与发现**: 在分布式环境中,服务的地址可能动态变化,因此需要服务注册与发现...
3. **序列化/反序列化模块**:负责将对象转换为可以在网络上传输的字节流,以及将接收到的字节流还原为对象。 4. **网络传输模块**:处理客户端和服务端之间的数据传输。 5. **协议解析模块**:解析和构造RPC请求和...