它们是同义词吗?
维基百科通常对这些目的非常有帮助。
RPC:
远程过程调用(RPC)是一种进程间通信技术,允许计算机程序在另一个地址空间(通常是在共享网络上的另一台计算机上)执行子例程或过程,而无需程序员显式编码此远程交互的详细信息。
IPC:
进程间通信(IPC)是一组技术,用于在一个或多个进程中的多个线程之间交换数据。这些进程可能正在运行于连接在网络上的一台或多台计算机上。
因此,RPC只是IPC的一种。
RPC(远程过程调用)是一种特殊类型的通信方式,可在单台计算机上进行,也可以在多台计算机之间通过网络进行通信。 http://zh.wikipedia.org/wiki/远程过程调用
IPC(进程间通信)是一般性的术语,用于描述在不同进程(通常在同一台计算机上)之间进行通信的过程。 http://zh.wikipedia.org/wiki/进程间通信
RPC(远程过程调用)是IPC(进程间通信)的一种形式 - 后者是一个更普遍的术语,涵盖了除RPC之外的许多机制。
IPC是一组用于在同一台计算机或不同计算机上与两个进程通信的方法。它包括直接和间接通信,同步和异步通信以及显式缓冲。
而RPC是一种从服务器调用客户端过程并将其结果作为消息返回的方法。
RPC代表远程过程调用,它包括IPC(进程间通信),服务器位置,编组,网络故障和延迟等方面-特殊的复制技巧可以提高速度。
更多细节请参考: https://www.cs.cmu.edu/~410-f03/lectures/L31_IPCRPC.pdf
为什么和何时应该使用IPC?
进程分为两种:独立进程和协作进程。正如其名称所示,独立进程不与其他进程进行任何交互。但是,协作进程需要与其他进程进行通信和交互,这就是IPC出现的背景,正如我们在书中的第3.4节第123页所述:
合作进程需要一种进程间通信(IPC)机制,使它们能够交换数据,即彼此发送和接收数据。进程间通信有两个基本模型:共享内存和消息传递。什么是RPC,何时使用它以及它如何运作?
该书将RPC定义为:
在网络上发送的过程调用,以在另一台计算机上执行;在客户端-服务器计算中常用。
此外,在第3.8.2节中:
远程服务的最常见形式之一是RPC范例,其旨在为具有网络连接的系统之间的使用抽象过程调用机制。它在许多方面类似于IPC机制,并且通常建立在这样的系统之上。另一个需要考虑的问题是存根的操作方式,这为系统提供了一定程度的封装。
现在我们对RPC和IPC有了更好的理解,让我们回答这些问题:
RPC和IPC之间有什么区别?
是的,有。
RPC和IPC之间有什么区别?
通常,RPC的目的仅是为了为调用者调用一个函数(过程)并返回包含调用该函数结果的消息。但是,IPC的目的仅是在与通信相关的进程之间交换数据。即使在像Android binder framework这样使用RPC作为IPC形式的情况下,我们可以说该模型强调封装和接口(通过在此处使用单词RPC),用于进程通信。或者简单地说,它以RPC方式执行IPC(或者可以说是相反的)。
RPC和IPC是同义词吗?
尽管它们具有许多相似之处和属性,但技术上的答案是否定的。