RPC与RMI的区别
请大侠解释RPC与RMI的区别?1RMI局限在JAVA范围内,RPC支持多语言?2RPC同步,RMI支持异步?...
请大侠解释RPC与RMI的区别? 1RMI局限在JAVA范围内,RPC支持多语言? 2RPC同步,RMI支持异步?
展开
1个回答
展开全部
RMI和RPC之间最主要的区别在于方法是如何被调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。
在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为“classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。
远程对象方法调用并不是新概念,远程过程调用
(RPC-remote
procedure
call)
已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即
RPC
支持多种语言,而
RMI(Remote
Method
Invocation)只支持
Java
写的应用程序。
另外
RMI
调用远程对象方法,允许方法返回
Java
对象以及基本数据类型。而
RPC
不支持对象的概念,传送到
RPC
服务的消息由外部数据表示
(External
Data
Representation,
XDR)
语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由
XDR
定义的数据类型才能被传递,
RPC
不允许传递对象。可以说
RMI
是面向对象方式的
Java
RPC
。
在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为“classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。
远程对象方法调用并不是新概念,远程过程调用
(RPC-remote
procedure
call)
已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即
RPC
支持多种语言,而
RMI(Remote
Method
Invocation)只支持
Java
写的应用程序。
另外
RMI
调用远程对象方法,允许方法返回
Java
对象以及基本数据类型。而
RPC
不支持对象的概念,传送到
RPC
服务的消息由外部数据表示
(External
Data
Representation,
XDR)
语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由
XDR
定义的数据类型才能被传递,
RPC
不允许传递对象。可以说
RMI
是面向对象方式的
Java
RPC
。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询