JAX-RPC vs JAX-WS简介

英文原文链接:http://www-128.ibm.com/developerworks/webservices/library/ws-tip-jaxwsrpc.html

JAX-WS 2.0JAX-RPC 1.1的后续版本。这篇文章介绍一系列这两种编程模型的对比:

 

介绍

 

Web服务已经出现了好长一段时间了。首先有的是SOAP。但是SOAP只是用来描述消息(message)是什么样的。然后就有了WSDL.但是WSDL没有告诉你怎么基于Java平台,来写web服务。然后紧跟着出现了JAX-RPC 1.0。使用了几个月后,国际开放组织JCP(Java Community Process(JCP Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。Java技术和JCP两者的原创者都是SUN计算机公司。然而,JCP已经由SUN1995年创造Java的非正式过程,演进到如今有数百名来自世界各地Java代表成员一同监督Java发展的正式程序。)写这个规范的人们意识到规范必须做些调整,所以就出来了JAX-RPC 1.1。差不多使用这个规范一年后,JCPJAX-RPC规范制订者想要重新构建一个更好的版本:JAX-RPC 2.0。一个基本的目标就是跟行业的发展方向保持一致,但是行业又不是仅仅在做基于RPCWeb服务,他们也在做面向消息的web服务。所以说“RPC”从名称JAX-RPC中被删去了,取而代之的是“WS(它当然是代表Web Service的意思)。因此,JAX-RPC 1.1的后续版本就是JAX-WS 2.0-基于XMLWeb 服务的Java API

 

什么保持不变

 

在我们详细说明JAX-RPC 1.1 JAX-WS 2.0之间的不同点之前,我们应该首先讨论下他们两者有哪些方面是相同的:

 

         JAX-WS仍然支持基于 HTTPSOAP1.1,所以说互操作性将不会受到影响。同样的消息仍然能够横跨传输线路流动。

 

         JAX-WS仍然支持WSDL1.1,所以说你之前学习的那个规范仍然是有用的。WSDL2.0规范就要接近完成了,但是在JAX-WS 2.0最终发布后WSDL1.1仍然能够正常使用。

 

有什么不一样

 

         SOAP 1.2

 

JAX-RPC JAX-WS都支持SOAP1.1,而JAX-WS也支持SOAP 1.2

 

         XML/HTTP

 

WSDL 1.1规范定义了一个HTTP绑定,通过这种方式你可以在不用SOAP时基于HTTP来发送XML消息。JAX-RPC忽略了HTTP绑定。JAX-WS增加了对它的支持。

 

         WS-IBasic Profiles

 

JAX-RPC支持WS-Is Basic Profile(BP)1.0,而JAX-WS支持BP1.1(WS-Iweb服务互操作组织。)

 

   新的Java特性

 

    Ø         JAX-RPC 映射到Java 1.4,JAX-WS映射到Java 5.0JAX-WS依赖于许多在Java5.0中的新特性。

 

    Ø         Java EE 5,J2 EE 1.4的后续版本,增加了对JAX-WS的支持,但是它同样也保留了对JAX-RPC的支持,这样可能会把现在的Web服务的初学者弄糊涂。

 

 数据映射模型

 

    Ø         JAX-RPC有它自己的数据映射模型,它大概涵盖了所有schema类型的90%。

 

那些它没有汲及到的都映射到了javax.xml.soap.SOAPElement

 

    Ø         JAX-WS的数据映射模型是JAXB.JAXB承诺映射所有的XML schema

 

         接口映射模型

 

JAX-WS的基本接口映射模型跟JAX-RPC的有很大的不同;但是:

 

    Ø  JAX-WS的模型利用了Java 5.0的新特性。

 

    Ø  JAX-WS的模型进了异步功能。

 

          动态的编程模型 

 

    Ø         JAX-WS的动态客户端模型跟JAX-RPC的有很大的不同。许多的改变表明了行业需要:

 

  √    它引进了面向消息的功能。

 

  √    它引进了动态的异步功能。

 

    Ø         JAX-WS 也增加了动态的服务器模型,这个JAX-RPC是没有的。

 

         MTOM (Message Transmission Optimization Mechanism)

 

JAX-WS,通过JAXB,增加了对MTOM的支持,新的附件规范。微软从不买进带有附件的SOAP规范;但是可以看出来越来越多的MTOM支持,所以附件的互操作性应该会成为现实的。

 

         处理器模型

 

     Ø         JAX-RPCJAX-WS处理器模型有了相当多的改变

 

     Ø         JAX-RPC处理器依赖于SAAJ 1.2JAX-WS处理器依赖于新的SAAJSOAP with Attachments API for Java1.3规范。

 

在本文以下的内容里,我们将要讨论SOAP 1.2XML/HTTP,WS-I Basic Profiles,还有Java 5.0.

 

SOAP 1.2

 

从编程模型的角度来看,SOAP 1.1SOAP 1.2之间实际上没有很多的不同。作为一个Java程序员,这些不同中唯一要碰到的地方就是什么时候使用处理器。SAAJ 1.3已经升级到支持SOAP 1.2了。

XML/HTTP

 

就像SOAP 1.2的变化,从编程模型的角度来看,SOAP /HTTPXML/HTTP消息之间实际上没有很多的不同。作为一个Java程序员,这些不同中唯一要碰到的地方就是什么时候使用处理器。HTTP绑定有它自己的处理器链并且有它自己的消息语境属性。

 

WS-Ibasic profiles

 

JAX-RPC 1.1支持WS-IBasic Profile(BP)1.0.从那时起,WS-IBP制定者就已经开发出来了BP 1.1(而且相关的AP 1.0SSBP 1.0.这些新的profiles阐明了一些小的观点,并且更加明显地定义了附件。JAX-WS2.0支持这些更新的profiles。对于大部分来说,它们存在的不同之处不影响Java编程模型。有个例外就是附件。WS-I还没有消除对附件存在的一些疑问,但是他们也定义了他们自己的XML附件类型:wsi:swaRef

 

很多人被所有这些profiles搞得很困惑。你将需要一段时间来消除这些困惑。

 

WS-I的第一个basic profileBP1.0)做了很好的工作来阐明不同的规范。但它不是完美的。而且特别是支持SOAP附件也仍然是不明确的。在他们的第二个迭代中,WS-IBP制定者制定出来了baisic profile附件-BP 1.1-而且修正了一些在第一版本所遗漏的东西。在这点他们也增加了两个互斥的补充到basic profileAP 1.0SSBP 1.0AP 1.0是附件框架(Attachment Profile),它描述了怎样使用Sw/A.SSBP 1.0是简单的SOAP绑定框架,它描述了一个不支持Sw/A(比如说微软的.net)Web服务引擎。The remaining profiles that WS-I has and is working on build on top of those basic profiles.

 

Java 5

 

Java语言有很大的变化。JAX-WS依赖于:annotationsgenerics, executors

 

总结

 

JAX-WS2.0JAX-RPC 1.1的后续版本。有一些东西没有变化,但是在某种程度上这两种编程模型是不同的。总的看来,对于你为什么将要或者是将不会从JAX-RPC转移 到JAX-WS有一些原因。

 

想继续使用JAX-RPC 1.1的原因:

 

         If you want to stay with something that's been around a while, JAX-RPC will continue to be supported for some time to come.

 

         If you don't want to step up to Java 5.

 

         If you want to send SOAP encoded messages or create RPC/encoded style WSDL.

 

JAX-RPC走进JAX-WS的原因:

 

         If you want to use the new message-oriented APIs.

 

         If you want to use MTOM to send attachment data.

 

         If you want better support for XML schema through JAXB.

 

         If you want to use an asynchronous programming model in your Web service clients.

 

         If you need to have clients or services that can handle SOAP 1.2 messages.

 

         If you want to eliminate the need for SOAP in your Web services and just use the XML/HTTP binding.

 

         If you like playing with leading edge technology.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值