jax-RPC和jax-WS比较

jax-RPC和jax-WS比较1、JAX-RPC简介:JAX-RPC为基于SOAP(简单对象访问协议)的应用程序的开发提供了一个编程模型。JAX-RPC编程模型通过抽象SOAP协议层的运行机制与提供Java和Web服务描述语言(WSDL)间的映射服务来简化开发。通过使用JAX-RPC(JavaAPIforXML-basedRPC),已有的Java类或Java应用都能够被重新包装,并以WebServices

大家好,又见面了,我是你们的朋友全栈君。

1JAX-RPC简介:

JAX-RPC为基于SOAP(简单对象访问协议)的应用程序的开发提供了一个编程模型JAX-RPC编程模型通过抽象SOAP协议层的运行机制与提供JavaWeb服务描述语言(WSDL)间的映射服务来简化开发。

通过使用JAX-RPC(Java API for XML-based RPC),已有的Java类或Java应用都能够被重新包装,并以Web Services的形式发布。JAX-RPC提供了将RPC参数(in/out)编码和解码的API,使开发人员可以方便地使用SOAP消息来完成RPC调用。同样,对于那些使用EJB(Enterprise JavaBeans)的商业应用而言,同样可以使用JAX-RPC来包装成Web服务,而这个Web ServiceWSDL界面是与原先的EJB的方法是对应一致的。JAX-RPC为用户包装了Web服务的部署和实现,对Web服务的开发人员而言,SOAP/WSDL变得透明,这有利于加速Web服务的开发周期。

Web服务已经出现很久了,最早JAX-RPC 1.0;经过数月使用之后,调整为 JAX-RPC 1.1;之后为了与行业方向保持一致,但行业中不仅只使用 RPC Web服务,还使用面向消息的 Web服务,因此出现了JAX-WS 2.0——Java API for XML-based Web services(JAX-RPC 2.0版本)

2JAX-RPC 1.1 JAX-WS 2.0的相同之处:

  • JAX-WS仍然支持 SOAP 1.1 over HTTP 1.1,因此互操作性将不会受到影响,仍然可以在网上传递相同的消息。
  • JAX-WS仍然支持 WSDL 1.1,因此您所学到的有关该规范的知识仍然有用。WSDL 2.0规范已经接近完成,但在 JAX-WS 2.0相关工作结束时其工作仍在进行中。

3JAX-RPC 1.1 JAX-WS 2.0区别:

  • SOAP 1.2

JAX-RPC JAX-WS都支持 SOAP 1.1JAX-WS还支持 SOAP 1.2

  • XML/HTTP

WSDL 1.1规范在 HTTP绑定中定义,这意味着利用此规范可以在不使用 SOAP的情况下通过 HTTP发送 XML消息。JAX-RPC忽略了 HTTP绑定。而 JAX-WS添加了对其的支持。

  • WS-I Basic Profile

JAX-RPC支持 WS-I Basic Profile (BP) V1.0JAX-WS支持 BP 1.1。(WS-I Web服务互操作性组织。)

  • Java功能
    • JAX-RPC映射到 Java 1.4JAX-WS映射到 Java 5.0JAX-WS依赖于 Java 5.0中的很多新功能。
    • Java EE 5 J2EE 1.4的后续版本,添加了对 JAX-WS的支持,但仍然支持 JAX-RPC,这可能会对 Web服务新手造成混淆。
  • 数据映射模型
    • JAX-RPC具有自己的映射模型,此模型大约涵盖了所有模式类型中的 90%。它没有涵盖的部分映射到了javax.xml.soap.SOAPElement
    • JAX-WS的数据映射模型是 JAXBJAXB可保证所有 XML模式的映射。
  • 接口映射模型

JAX-WS的基本接口映射模型与 JAX-RPC的区别并不大,不过二者之间存在以下差异:

    • JAX-WS的模型使用新的 Java 5.0功能。
    • JAX-WS的模型引入了异步功能。
  • 动态编程模型
    • JAX-WS的动态客户机模型与 JAX-RPC的对应模型差别很大。很多更改都是为了认可行业需求:
      • 引入了面向消息的功能。
      • 引入了动态异步功能。
    • JAX-WS还添加了动态服务器模型,而 JAX-RPC则没有此模型。
  • 消息传输优化机制(Message Transmission Optimization MechanismMTOM

JAX-WS通过 JAXB 添加了对新附件规范 MTOM 的支持。Microsoft 从来没有给 SOAP 添加附件规范;但似乎大家都支持 MTOM,因此应该能够实现附件互操作性。

  • 处理程序模型
    • JAX-RPC JAX-WS的过程中,处理程序模型发生了很大的变化。
    • JAX-RPC处理程序依赖于 SAAJ 1.2JAX-WS处理程序依赖于新的 SAAJ 1.3规范。

4、SOAP编码

SOAP 编码已经在 Web服务社区失宠了。WS-I Basic Profile不支持它。因此,作为 Java Web服务的最新版本的 JAX-WS已不允许使用 SOAP编码JAX-RPC支持 SOAP编码,因此,如果真的必须使用采用 SOAP编码的消息,则请仍然使用 JAX-RPC

SOAP 1.2

从编程模型的角度而言,SOAP 1.1 SOAP 1.2之间并没有太多的差异。作为 Java程序员,您只会在使用处理程序时遇到这些差异,我们将在以后的技巧文章中对如何处理这种情况进行讨论。SAAJ 1.3已更新以支持 SOAP 1.2

XML/HTTP

SOAP 1.2的更改类似,从编程模型的角度而言,SOAP/HTTP XML/HTTP消息之间并没有太多的差异。作为 Java程序员,您只会在使用处理程序时遇到这些差异,我们将在以后的技巧文章中对如何处理这种情况进行讨论。HTTP绑定具有自己的处理程序链和自己的一组消息上下文属性。

WS-I Basic Profiles

JAX-RPC 1.1 支持 WS-I Basic Profile (BP) 1.0。从那时起,WS-I 人员就完成了 BP 1.1(以及关联的 AP 1.0和 SSBP 1.0)的开发。这些新概要阐明了一些小要点,更明确地定义了附件。JAX-WS 2.0 支持这些较新的概要。在大部分情况下,其间的差异并不会影响 Java 编程模型。不过附件除外。WS-I 不仅处理了有关附件的一些问题,而且还定义了自己的 XML附件类型:wsi:swaRef。

很多人都被这些概要搞糊涂了。为了弄清楚其间的问题,将需要了解一下其相关历史。

WS-I 的第一个基本概要 (BP 1.0)在阐明各个规范方面做得非常不错,但它并不完美。尤其对 SOAP with Attachments (Sw/A) 的支持仍然相当不明确。在第二个工作循环中,WS-I人员将附件从基本概要 (BP 1.1) 中分离出来,并对第一版中一些没有讨论的内容进行了补充。当时他们还添加了两个互不包括的基本概要补充文档:AP 1.0和 SSBP 1.0。AP 1.0 是附件概要 (Attachment Profile),描述如何使用 Sw/A。SSBP 1.0是简单 SOAP 绑定概要 (Simple SOAP Binding Profile),描述并不支持 Sw/A的 Web 服务引擎(如 Microsoft 的 .NET)。WS-I所提供的其他概要文件都是以这些基本概要文件为基础构建的。

Java 5

对 Java 语言进行了一系列更改。JAX-WS 依赖于:Annotation、通用函数和执行程序。我们将在后续的技巧文章中具体讨论 JAX-WS如何依赖于这个新功能。有关 Java 的这些新功能的信息,请参见参考资料中的 Java 5 链接。

总结

JAX-WS 2.0 是 JAX-RPC 1.1 的后续版本。其中有些内容保持不变,但大部分编程模型都或多或少有些不同。本技巧文章中介绍的主题将在一系列技巧文章中展开讨论,这个系列的文章对 JAX-WS和 JAX-RPC 间的区别进行了详细的讨论,我们将在随后的数月中陆续发布。大致看来,可能会因为以下这些原因而决定从 JAX-RPC迁移到 JAX-WS,或保持不变。

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

  • 如果您希望继续使用现有的东西,JAX-RPC将在今后一段时间内继续得到支持。
  • 如果您不希望升级到 Java 5
  • 如果您希望发送采用 SOAP编码的消息或创建 RPC/encoded样式的 WSDL

升级到 JAX-WS 2.0 的原因:

  • 如果您希望使用新的面向消息的 API
  • 如果您希望使用 MTOM发送附件数据。
  • 如果您希望通过 JAXB更好地支持 XML模式。
  • 如果您希望在 Web服务客户机中采用异步编程模型。
  • 如果您需要使用能够处理 SOAP 1.2消息的客户机或服务。
  • 如果您希望在 Web服务中消除对 SOAP的需求,而直接使用 XML/HTTP绑定。
  • 如果您喜欢使用领先的尖端技术。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159671.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用的数据链路层协议_数据链路层和网络层

    常用的数据链路层协议_数据链路层和网络层由于以太网中的所有的主机共享一个通信信道,因此在同一时刻只允许有一台主机发送数据,否则各个主机发送的数据就会相互干扰。站在系统的角度来看,这里各个主机所共享的通信信道就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。……

    2025年8月21日
    2
  • freemarker 教程_freemarker自定义标签

    freemarker 教程_freemarker自定义标签FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等。页面的静态化有的较多中的注释都是以#号表示的第一个项目结构代码的实现[java…

    2022年10月6日
    3
  • JavaScript Array(数组)对象中指定元素的删除

    JavaScript Array(数组)对象中指定元素的删除js在前台界面中举足轻重,在使用js删除数组时遇到一些问题(详见删除元素),参考很多大神的资料,现把常用的函数总结出来,以备不时之需。遇到的问题是,在table中有N行元素,并且存在父子关系,父行的id=“id_1”,子行的id=“id_1_1“,子行的子行id=”id_1_2”,依次类推,当我点击父行时会把所有的子行删除,当点击子行会把子行的子行删除,这样我就需要获取子行的id的最后一

    2022年7月14日
    95
  • Parallel.ForEach() 并行循环[通俗易懂]

    Parallel.ForEach() 并行循环[通俗易懂]现在的电脑几乎都是多核的,但在软件中并还没有跟上这个节奏,大多数软件还是采用传统的方式,并没有很好的发挥多核的优势。微软的并行运算平台(Microsoft’sParallelComputingPlatform(PCP))提供了这样一个工具,让软件开发人员可以有效的使用多核提供的性能。Parallel.ForEach()和Parallel.For()就是微软并发类的成员。今天做了一个简…

    2022年7月19日
    17
  • google地图怎么下载离线地图_谷歌瓦片行列号算经纬度

    google地图怎么下载离线地图_谷歌瓦片行列号算经纬度谷歌地图离线地图瓦片下载Ifyou’veeverwantedtobeabletodownloadGoogleMapsdataforofflineuse,youshouldcheckoutgmapcatcher,across-platformapplicationthatcachesmapsegmentslocally.如果您曾经希望能够下载…

    2022年9月20日
    2
  • 最小生成树的两种方法(Kruskal算法和Prim算法)[通俗易懂]

    关于图的几个概念定义:连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图。 连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网。 生成树:一个连通图的生成树是指一个连通子图,它含有图中…

    2022年4月6日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号