RMI与RPC

2016年05月22日

RMI (Remote Method Invoke)

Java 的RMI允许创建一个分布式的基于Java的应用程序,可以从另一个Java虚拟机执行一个远程对象的方法,使用序列化技术对参数进行编解码,支持多态(出处)

RMI的使用 : 传送门

RPC (Remote Procedure Call)

远程过程调用,像调用本地服务一样,调用远端的服务(维基百科)

RMI 和 RPC的差别

1. 方法调用

RMI中远程接口的每个方法都有方法签名,如果在服务端新添加一个方法签名,在不修改客户端远程接口的方法签名的情况下,是无法使用这个新方法的.

RPC 中请求是以”className.methodName” 的形式发起的,请求到达服务端后,服务端就会搜寻与className相匹配的类中与methodName相匹配的方法, 进行调用,并将其结果返回给调用方

2. 语言支持

RMI只支持Java应用程序(要求客户端和服务端都是Java程序) PRC支持多语言,不理会操作系统以及语言之前的差异

3. 数据返回

RMI支持返回Java对象以及基本数据类型,而RPC中是没有对象的概念的,数据通讯,由外部数据语言来表示.