RMI、RPC、SOAP通信技术介绍及比对
1、RMI
使用java的程序员,对于RMI(RemoteMethod Invoke,远程方法调用)一定不陌生,在java中,为了在分布式应用开发时,能够方便调用远程对象,java提供了RMI的API。在 RMI 中,远程对象按照好象它是本地行事,客户机应用程序会直接调用远程对象存根上的方法,因此,调用起来就如本地对象一样方便。RMI中封装了对象和请求的网络传送,使得异地的对象服务直接可用。
但RMI的使用必须是在能够识别java代码的环境下使用,即必须有JVM的支持。因此,他只适合在java程序间的对象通信。如果不在 Java 环境下工作,或者需要与非 Java 环境通信,那么SOAP、RPC、CORAR等都是可以的。
2、RPC & XML-RPC
RPC(Remote Method Invocation,远端过程调用) 与RMI的区别很明显,相比于RMI直接获取远端方法的签名,进行调用的方式,RPC使用的是C/S方式,发送请求到服务器,等待服务器返回结果。
为了包装RPC的请求信息,推出了XML-RPC,客户端发送一条特定消息,该消息中必须包括名称、运行服务的程序以及输入参数。
XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。SOAP最主要的工作是使用标准的XML描述了RPC的请求信息(URI/类/方法/参数/返回值)。SOAP的方式,SOAP 是对如CORBA 和 RMI-IIOP 这样的重型 范例吸引人的替代。
3、SOAP
SOAP的消息被称为一个SOAP Envelope,包括SOAP Header和SOAP Body。其中,SOAP Header可以方便的插入各种其它消息来扩充Web Service的功能,比如Security(采用证书访问Web Service),SOAP Body则是具体的消息正文,也就是Marshall后的信息。
某些程序员每天挣扎于 Perl 和 C 组件、C 和 Java 组件之间的通信。这些开发人员可以从转向基于 SOAP 或基于 XML-RPC 的通信模型中获益匪浅。另一方面,从不转向 Java 以外语言的 Java 开发人员可以转向 RMI 而不是使用 SOAP,他们会看到极大的性能改善。
4、WSDL
WSDL(Web Services Description Language)是描述web服务的,是描述怎样访问web服务的。WSDL是用来描述SOAP的,换句话说,WSDL 文件告诉你调用 SOAP 所需要知道的一切。WSDL也是一段xml。现在各个语言对wsdl的支持都很成熟,可以根据同一份wsdl文件生成自己语言的客户端。
5、其他
其他还有REST、Axis等
下面是RMI、RPC和SOAP的比较
|
RMI |
RPC |
SOAP |
通信方式 |
远程对象按照好象它是本地行事.客户机应用程序直接调用远 程对象存根上的方法 |
客户机不直接调用方法,而是向服务器发送请求消息。 |
在XML-RPC上,使用规定的XML格式的数据格式来通信。比XML-RPC更具适用性,能够支持更多的类型及数据结构。 |
优点 |
远程对象按照好象它是本地行事,编译期可以检查错误 |
它允许客户机与服务器之间有更大的独立性。 服务器无需让客户机知道,就可以完全关机和被替换 |
非常适合异步通信和针对松耦合的客户机和服务器 |
缺点 |
只能基于java语言。异常信息容易丢失。客户机与服务器紧耦合。 |
丧失了许多可以确保方法和参数是正确的编译时便利。 |
必须做大量的运行时检查,而且开发人员丧失了许多可以确保方法和参数是正确的编译时便利。 |
参考:
RPC, SOAP, WSDL的关系 http://blog.sina.com.cn/s/blog_a04a2e0301015283.html
深入探讨SOAP、RPC和RMI http://www.linuxso.com/architecture/13676.html
相关推荐
在实际应用中,选择RPC、RMI还是SOAP,主要取决于具体的应用需求、技术栈以及对跨平台、跨语言的要求。如果项目仅限于Java环境,则RMI可能是较好的选择,因为它的开发和使用相对简单,且可以很好地与Java生态系统...
本文将深入探讨RPC和RMI这两种技术,通过模拟基于.Net平台和Socket通信协议的实现,来具体说明这两种通信机制的工作原理。 远程过程调用(RPC)是一种使客户端能够像调用本地服务一样,透明地调用位于网络中其他...
远程方法调用(Remote Method Invocation, RMI)与远程过程调用(Remote Procedure Call, RPC)是两种在分布式系统中实现跨网络通信的关键技术。它们允许一个程序在一台计算机上执行操作,这些操作实际上是在另一台...
RPC(Remote Procedure Call,远程过程调用)与RMI(Remote Method Invocation,远程方法调用)是两种在分布式系统中实现跨网络通信的关键技术。它们允许一个程序在不关心远程服务器具体实现的情况下,调用远程...
Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。
Restful、SOAP、RPC、SOA、微服务之间的知识点摘要 一、Restful * 定义:Restful 是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful 架构或服务...
RMI(Remote Method Invocation)和RPC(Remote Procedure Call Protocol)都是分布式计算中的核心技术,用于实现跨网络的程序调用。RPC是一种通用的远程过程调用协议,它允许一个程序调用另一个不在同一台计算机上...
本文将详细介绍Java RMI(Remote Method Invocation)、RPC(Remote Procedure Call)、JMS(Java Messaging Service)、CORBA(Common Object Request Broker Architecture)以及DCOM(Distributed Component ...
在IT领域,分布式通信是实现跨网络系统交互的关键技术之一,其中远程方法调用(RMI)和远程过程调用(RPC)是最为常见的两种机制。本文将深入探讨这两种技术的特点、工作原理以及它们之间的异同,以帮助程序员更好地...
RPC(Remote Procedure Call)和RMI(Remote Method Invocation)是两种在分布式系统中实现跨网络对象调用的技术,常用于构建分布式应用。本示例程序是关于如何利用RPC和RMI来实现一个简单的加法运算,这对于理解这...
本文主要讨论的是如何将Hessian RPC与RMI技术整合到Structs、Spring、Hibernate和Ibatis这四个关键的Java开发框架中,以构建一个高效、灵活的分布式应用程序。 1. **Hessian配置说明**: Hessian的配置通常涉及...
RPC(Remote Procedure Call)是一种进程间通信(IPC)技术,允许一个程序调用另一个不在同一台计算机上的程序。在Java中实现RPC通信模型,通常涉及客户端、服务端、序列化和网络通信等多个环节。以下是对这个主题的...
RPC(Remote Procedure Call)和RMI(Remote Method Invocation)都是分布式计算中的关键技术,它们允许程序在不同的计算机上相互通信,仿佛这些方法或过程是在本地执行一样。然而,两者之间存在一些重要的区别。 ...
RMI(Remote Method Invocation),即远程方法调用,是Java平台中用于实现不同Java虚拟机间对象通信的技术。RMI的目标是使得分布在网络上的对象能够像本地对象一样工作,实现位置透明性,隐藏底层复杂的网络通信细节...
在IT行业中,分布式服务框架是实现大规模系统高可用、高性能的关键技术之一,而Dubbo、Hessian和RMI则是其中的三个重要组件。本篇将深入解析这些技术及其在实际应用中的示例。 首先,Dubbo是阿里巴巴开源的一款高...
JAVA分布式之RMI实例教程网络通信原理[收集].pdf
在IT行业中,分布式服务框架Dubbo以及Remote Procedure Call(RPC)技术是构建大规模高并发系统的关键组件。这里我们将深入探讨这两个主题,以及它们在实际应用中的角色和原理。 首先,让我们了解一下Dubbo。Dubbo...