admin 管理员组文章数量: 1184232
2024年3月9日发(作者:lamp兄弟连php教程)
新浪微博:/csx1998(放牛长大)
1、web service体系结构
首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy
Class)
这个代理类负责与WebService服务器进行Request 和Response
当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生
成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,
处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送
给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,
继而进行后续操作。这就是WebService的一个运行过程。
Web Service大体上分为5个层次:
1. Http传输信道
2. XML的数据格式
3. SOAP封装格式
4. WSDL的描述方式
5. UDDI
2、RCP
客户机对服务器的RPC调用,其内部操作大致有如下十步:
1.调用客户端句柄;执行传送参数、
2.调用本地系统内核发送网络消息、
3.消息传送到远程主机
4.服务器句柄得到消息并取得参数、
5.执行远程过程、
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核、
8.消息传回本地主机、
9.客户句柄由内核接收消息、
10.客户接收句柄返回的数据
3、webservices/corba/jms/rpc/rmi区别
web service提供的服务是基于web容器的,底层使用http协议,类似一个远程的服务提供
者,比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨
平台的。webservice服务端是运行在web服务器上的,不过也可以使用Remoting命名空
间,创建c/s式的服务,比如CORBA就是c/s的方式提供服务
新浪微博:/csx1998(放牛长大)
3.1RPC与Web Service
1、RPC可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什
么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些
2、RPC不是标准,而Web Service是标准;
3、RPC一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需
要web服务进行启动
我建议还是采用Web Service好些,对于开发来说更容易控制RPC一般用在C/S的系统中,
Web Service是用在B/S系统中
后者还是各语言的通用接口
3.2RPC与RMI
远程对象方法调用并不是新概念,远程过程调用 (RPC) 已经使用很多年了。远程过程调用
被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。
即 RPC 支持多种语言,而 RMI 只支持 Java 写的应用程序。 另外 RMI 调用远程对象
方法,允许方法返回 Java 对象以及基本数据类型。而 RPC 不支持对象的概念,传送到
RPC 服务的消息由外部数据表示 (External Data Representation, XDR) 语言表示,这种
语言抽象了字节序类和数据类型结构之间的差异。只有由 XDR 定义的数据类型才能被传
递, RPC 不允许传递对象。可以说 RMI 是面向对象方式的 Java RPC 。
3.3JMS 与RMI
Java 消息服务 ( Java Messaging Service, JMS ) 是一种允许应用程序创建、发送、接受
和读取消息的Java API 。 JMS 与 RMI 的区别在于,采用 JMS 服务,对象是在物理上
被异步从网络的某个 JVM 上直接移动到另一个 JVM 上(支持消息通知?如xmpp协议)
JMS 消息的两种模式(Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub) )
/view/而 RMI 对象是绑定在本
地 JVM 中,只有函数参数和返回值是通过网络传送的(是请求应答机制)。
3.4CORBA、RMI、webservices
新浪微博:/csx1998(放牛长大)
在使用CORBA进行系统通信架构,CORBA使用统一的IDL接口而webservices使用wsdl,
一个是c/s命名服务,一个是基于web提供的服务,CORBA还有事件服务,是在命名服务
上的一个服务,可以实现消息的通知,而webservices是请求应答模式的。CORBA年数已
久比较成熟,有很多大公司支持,后来慢慢走下坡路,使用corba是一个很繁琐的事情,对
于后来的系统建议使用webservices进行开发,现在eclipse对webservices服务端快速开
发提供了很好的支持,并且有Axis,axis2,Xfire以及cxf的支持,他们的对比请参阅
/growup/archive/2011/03/06/,而webservices实现了
企业SOA架构思想,对企业ESB系统很好的接入
CORBA 是 90 年代初有 OMG 组织提出的一个分布式互操作标准,跨平台语言的Java
有JACORB支持。而 RMI 直接把分布式对象模型嵌入到 Java 语言的内部,使得 Java
程序员可以自然的编写分布式程序,不必离开 Java 环境,或者涉及 CORBA IDL 以及
Java 到 CORBA 的类型转换。然而 RMI 不遵守 CORBA 标准,基本上是Java-to-Java
技术,难以实现与其他语言编写的对象之间的互操作
RMI 和 CORBA 常被视为相互竞争的技术,因为两者都提供对远程分布式对象的透明访问。
但这两种技术实际上是相互补充的,一者的长处正好可以弥补另一者的短处。 RMI 和
CORBA 的结合产生了 RMI-IIOP, RMI-IIOP 是企业服务器端 Java 开发的基础。
1997 年, IBM 和 Sun Microsystems 启动了一项旨在促进 Java 作为企业开发技术的发
展的合作计划。两家公司特别着力于如何将 Java 用作服务器端语言,生成可以结合进现
有体系结构的企业级代码。所需要的就是一种远程传输技术,它兼有 Java 的 RMI
( Remote Method Invocation ,远程方法调用)较少的资源占用量和更成熟的 CORBA
( Common Object Request Broker Architecture ,公共对象请求代理体系结构)技术的
健壮性。出于这一需要, RMI-IIOP问世了,它帮助将 Java 语言推向了目前服务器端企业
开发的主流语言的领先地位 。
新浪微博:/csx1998(放牛长大)
版权声明:本文标题:webservices、corba、jms、rpc、rmi的区别和概述 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1709989649a552522.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论