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语言。异常信息容易丢失。客户机与服务器紧耦合。

丧失了许多可以确保方法和参数是正确的编译时便利。

必须做大量的运行时检查,而且开发人员丧失了许多可以确保方法和参数是正确的编译时便利。

 

最新文章

  1. Main 程序的入口要做哪些事情
  2. 二叉树计数(codevs 3112)
  3. 提高PHP性能的实用方法+40个技巧优化您的PHP代码
  4. 基于MFC的Opengl实现动画
  5. PHP泛域名应用
  6. Uva10766 Organising the Organisation
  7. uwsgi常用配置
  8. 【转】命令行浏览器 curl 命令详解,Linux中访问url地址
  9. Asp.Net Core WebApi (Swagger+EF Core/Code First)
  10. C语言数据结构_严蔚敏+吴伟民 课本源码
  11. 朗科32G TF卡的读写测试
  12. html button 点击 显示倒计时秒数
  13. [daily][archlinux] 本地字符乱码, 无法显示中文
  14. SpringBoot配置swagger2(亲测有效,如果没有配置成功,欢迎在下方留言)
  15. fatal error: caffe/proto/caffe.pb.h: No such file or directory
  16. 使用 IntraWeb (2) - Hello IntraWeb
  17. Eclipse C++的配置问题launch failed binary not found
  18. HTTP协议详解之URL篇
  19. 理解HTTP之Content-Type
  20. Web 应用简单测试方案

热门文章

  1. ARM-Linux S5PV210 UART驱动(5)----串口的open操作(tty_open、uart_open)
  2. MFC VC6++学习笔记
  3. 1010. Radix (25)
  4. DataGrid中取HyperLinkColumn列的值,处理DataGrid中绑定的特殊字符
  5. 【发问】代表ODBC、Ibatis 发问 Hibernate、Linq、Entity、JPA
  6. TWaver3D入门探索——3D拓扑图之人在江湖
  7. MSMQ(消息队列)
  8. [转载]jQuery.lazyload详解 - 图片延时加载
  9. 团体程序设计天梯赛-练习集L1-010. 比较大小
  10. 解决WIN8 磁盘100 活动占用100% win8硬盘一直响