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之间的不同点之前,我们应该首先讨论下他们两者有哪些方面是相同的:

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

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

有什么不一样

l         SOAP 1.2

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

l   XML/HTTP

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

l   WS-IBasic Profiles

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

l  新的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服务的初学者弄糊涂。

l  数据映射模型

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

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

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

l         接口映射模型

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

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

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

l          动态的编程模型 

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

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

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

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

l         MTOM (Message Transmission Optimization Mechanism)

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

l         处理器模型

Ø         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的原因:

l         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.

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

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

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

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

l         If you want to use MTOM to send attachment data.

l         If you want better support for XML schema through JAXB.

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

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

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

l         If you like playing with leading edge technology.

猜你喜欢

转载自chxiaowu.iteye.com/blog/1287745