进程通信前言-(名词解析)

RPC:全称是Remote Procedure Call(远程过程调用),

是一种计算机通讯协议,它为我们定义了计算机 C 中的程序如何调用另外一台计算机 S 的程序,让程序员不需要操心底层网络协议,使得开发包括网络分布式多程序在内的应用程序更加容易。RPC 是典型的 Client/Server 模式,由客户端对服务器发出若干请求,服务器收到后根据客户端提供的参数进行操作,然后将执行结果返回给客户端。

进程通信前言-(名词解析)

说到这里RPC这个东西到底什么,不知道是不是有和我一样疑惑的,我在网上读了好多篇文章,也没弄清楚这到底是个啥,说是协议,可与HTTP协议相比而言,更加的抽象化,我来说下我对RPC的理解吧,就当抛砖引玉了,RPC是一种概念,这个概念怎么能够拿来用呢,那就是RPC框架,我称之为具象化,那么这个框架的底层可以由什么实现呢,可以用HTTP协议,可以用Socket,不要把RPC当成一个具体的东西来看,就像是出发点到终点,我们要是去怎么去呢,到达的方式是不是多种多样,而这个方式就是RPC,那你选择某个方式用到的工具就像是使用HTTP协议来实现RPC一样。

RPC:远程过程调用。RPC的核心并不在于使用什么协议。RPC的目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。RPC的原理主要用到了动态代理模式,至于http协议,只是传输协议而已。简单的实现可以参考spring remoting,复杂的实现可以参考dubbo

这只是我个人的理解,可能不对,大家包涵

IDL  Interface Description Language(接口定义语言) 

在实际工作中客户端与服务端会有各种各样的平台,就好像日常开发一样,为了统一处理不同的实现,需要定义一个共同的接口,于是有了 IDL。它通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。比如,一个组件用 C++ 写成,另一个组件用 Java 写,仍然可以通信。这个应该是容易理解的,这就像是一个约定俗成的东西,可以把它当成是翻译工具,不管你是用C还是java,到最后都是你能够读懂的东西。

进程通信前言-(名词解析)

IPC:Inter-Process Communication (进程间通信)

进程间通信(IPC,Inter-Process Communication)指至少两个进程或线程间传送数据或信号的一些技术或方法。Android 基于 Linux,而 Linux 出于安全考虑,不同进程间不能之间操作对方的数据,这叫做“进程隔离”。但是在大多数情形下,不同进程间的数据通讯是不可避免的,因此操作系统必须提供跨进程通信机制。