java中WebService概述

SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过中立的契约(独立于硬件平台、操作系统和编程语言)联系起来,使得各种形式的功能单元更好的集成。目前来说,WebService 是 SOA 的一种较好的实现方式,WebService 采用HTTP 作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式。但WebService 并不是完全符合 SOA 的概念,因为 SOAP 协议是 WebService 的特有协议,并未符合 SOA 的传输协议透明化的要求。SOAP 是一种应用协议,早期应用于 RPC 的实现,传输协议可以依赖于 HTTP、SMTP 等。

SOA 的产生共经历了如下过程:

java中WebService概述_第1张图片

通常采用 SOA 的系统叫做服务总线(BUS),结构如下图所示:

java中WebService概述_第2张图片

java中的web服务规范:

JAVA 中共有三种 WebService 规范,分别是 JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。
下面来分别简要的介绍一下这三个规范。

(1.)JAX-WS(javaTM API for XML-Based Web Services)

其底层支 持为 JAXB(Java xml binding, 是jax-ws,jax-rs底层使用的对象与XML之间转换的工具 ), 早期的基于 
SOAP 的 JAVA 的 Web 服务规范 JAX-RPC(Java API For  XML-Remote Procedure Call)目前已经被 JAX-WS 规范
取代, JAX-WS 是 JAX-RPC 的演进 版本,但 JAX-WS 并不完全向后兼容 JAX-RPC,二者最大的区别就是 
RPC/encoded 样式的 WSDL,JAX-WS 已经不提供这种支持。 JAX-RPC 的 API 从 JAVA EE5 开始已经移除,如 果你
使用 J2EE1.4,其 API 位于 javax.xml.rpc.*包。
JAX-WS(JSR 224)规范的 API 位于 javax.xml.ws.*包,其中大部分都是注解,提供 API 操作 Web 服务(通常在客户端使用的较多,由于客户端可以借助 SDK 生成,因此这个包中的API 我们较少会直接使用)。
WS-MetaData(JSR 181)是 JAX-WS 的依赖规范,其 API 位于 javax.jws.*包,使用注解配置公开的 Web 服务
置公开的 Web 服务的相关信息和配置 SOAP 消息的相关信息。

(2.)JAXM&SAAJ :

JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的 API,相当于 Web 服务的服务
器端,其 API 位于 javax.messaging.*包,它是 JAVA EE 的可选包,因此你需要单独下载。
SAAJ(SOAP With Attachment API For Java,JSR 67)是与 JAXM 搭配使用的 API,为构建SOAP 包和解析
SOAP包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。这里还要提到的是 SAAJ 规范,
其 API 位于 javax.xml.soap.*包。
JAXM&SAAJ与JAX-WS都是基于SOAP的Web服务,相比之下JAXM&SAAJ暴漏了SOAP更多的底层细节,编码
比较麻烦,而 JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心 SOAP 的任何
细节。那么如果你想控制 SOAP 消息的更多细节,可以使用 JAXM&SAAJ。

(3.)JAX-RS :

JAX-RS(JavaTM API for XML-RESTful Web Service), 是 JAVA 针对 REST(Representation State Transfer)风
格制定的一套 Web 服务规范,其 API 位于 javax.ws.rs.*包。




你可能感兴趣的:(java中WebService概述)