webservice初识

目录

1、webservice简介

2、webservice相关术语

2.1、AX-WS(JAX-RPC)

2.2、JAXM&SAAJ

2.3、JAX-RS

2.4、SOAP

2.5、WSDL

2.6、UDDI

3、webservice应用场景

4、webservice优缺点

4.1、优点

4.2、缺点

5、面向服务架构SOA

6、Apache CXF框架

6.1、Apache CXF框架介绍

6.2、Apache CXF框架特性


1、webservice简介

  • webservice 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。主要用于解决企业内部异构系统之间信息的交互以及一些公共资源的复用问题,如下图所示:

  • JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。
  • webService三要素:SOAP、WSDL、UDDI。

2、webservice相关术语

2.1、AX-WS(JAX-RPC)

  • JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。JAX-WS(JSR 224)规范的API 位于javax.xml.ws.*包,其中大部分都是注解,提供API 操作Web 服务(通常在客户端使用的较多,由于客户端可以借助SDK 生成,因此这个包中的API 我们较少会直接使用)。

2.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。

2.3、JAX-RS

  • JAX-RS 是JAVA 针对REST(RepresentationState Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行,你需要到JCP 上单独下载JAX-RS 规范的接口,其API 位于javax.ws.rs.*包。

2.4、SOAP

  • SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。因为SOAP是基于XML语言的协议来进行网上的数据传输以及基于HTTP进行请求,所以SOAP等于HTTP+XML数据。
  • SOP有三个主要的方面:XML-envelope为描述信息内容和如何处理内容定义了框架、将程序对象编码成为XML对象的规则、执行远程过程调用(RPC)的约定。
  • SOAP可以运行在任何其他传输协议上,它由Envelope(必须的部分。以XML的根元素出现。)、Headers(可选的部分)以及Body(必须的部分。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。)

2.5、WSDL

  • Web Service描述语言WSDL(SebService Definition Language)就是基于XML(标准通用标记语言下的一个子集)语言用机器能阅读的方式提供的一个正式描述文档,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
  • 通过wsdl说明书,就可以描述webservice服务端对外发布的服务,在wsdl说明中,描述了:对外发布的服务名称(类)、接口方法名称(方法)、接口参数(方法参数)以及服务返回的数据类型(方法返回值)。

2.6、UDDI

  • web服务提供商如何将自己开发的 Web 服务公布到因特网上,这就需要使用到UDDI了,UDDI是一个跨产业,跨平台的开放性架构,可以帮助Web 服务提供商在互联网上发布Web服务的信息。UDDI是一种目录服务,企业可以通过UDDI来注册和搜索Web服务。简单来时候话,UDDI就是一个目录,只不过在这个目录中存放的是一些关于 Web 服务的信息而已。并且UDDI通过SOAP进行通讯,构建于. Net之上。UDDI即Universal Description Discovery andIntegration,也就是通用的描述、发现以及整合。
  • UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

3、webservice应用场景

  • Web Service 可以适用于应用程序集成、软件重用、跨防火墙通信等需求。简单来说,如果一个功能,需要被多个系统使用可以使用webservice开发一个服务端接口,供不同的客户端应用。主要应用在企业内部系统之间的接口调用、面向公网的webservice服务。

4、webservice优缺点

4.1、优点

  • 异构平台的互通性。理论上, Web Service 最大的优势是提供了异构平台的无缝街接技术手段。由于不同的用户使用不同的硬件平台,不同的操作平台,不同的操作系统,不同的软件,不同的协议通信,这就产生了互相通信的需求。 Web Service 使任何两个应用程序,只要能读写XML,那么就能互相通信。
  • 更广泛的软件复用。软件的复用技术通过组合已有模块来搭建应用程序,能大幅度提高软件的生产效率和质量。用户只要获得了描述 Web Service 的 WSDL 文件,就可以方便地生成客户端代理,并通过代理访问 Web Service 。
  • 成本低、可读性强、应用范围广。Web Service 可用基于 XML 的 SOAP 来表示数据和调用请求。并且通过 HTTP 协议传输
    XML 格式的数据。
  • 迅捷的软件发行方式。(每个web Service称为一个生产者.不同的生产者可以相互协同合作完成整个应用)Web Service 将彻底地改变软件的发行方式。软件供应商可以把软件分解成若干个Web Service 模块构成的系统,直接在 Web 上发布。
  • 最重要的一点就是客户端与服务端可能是用不同的语言开发的,但是,通过webservice提供服务接口,客户端与服务端之前可以传递对象。

4.2、缺点

  • 由于soap是基于xml传输,本身使用xml传输会传输一些无关内容从而影响效率,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap去完成简单的数据传输而携带的信息更多效率再受影响;Web Service作为web跨平台访问的标准技术,很多公司都限定要求使用Web Service,但如果是简单的接口可以直接使用http传输自定义数据格式,开发更快捷。

5、面向服务架构SOA

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

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

6、Apache CXF框架

6.1、Apache CXF框架介绍

  • 上述的JAX-WS 和JAX-RS 规范我们采用Apache CXF 作为实现,CXF 是Objectweb Celtix和Codehaus XFire 合并而成。CXF 的核心是org.apache.cxf.Bus(总线),类似于Spring 的ApplicationContext,Bus 由BusFactory 创建,默认是SpringBusFactory 类,可见默认CXF是依赖于Spring 的,Bus 都有一个ID,默认的BUS 的ID 是cxf。你要注意的是Apache CXF 2.2 的发行包中的jar ,你如果直接全部放到lib 目录,那么你必须使用JDK1.6,否则会报JAX-WS 版本不一致的问题。对于JAXM&SAAJ 规范我们采用JDK 中自带的默认实现。
  • Apache CXF等于Celtix + XFire,ApacheCXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和XFire 两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。目前它仍只是 Apache 的一个孵化项目。
  • Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTfulHTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。

6.2、Apache CXF框架特性

  • 支持 Web Services 标准:CXF 支持多种 Web Services 标准,包含 SOAP、BasicProfile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
  • Frontends:CXF 支持多种“Frontend”编程模型,CXF 实现了 JAX-WS API (遵循JAX-WS 2.0 TCK 版本),它也包含一个“simple frontend”允许客户端和 EndPoint 的创建,而不需要 Annotation 注解。CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。
  •  容易使用: CXF 设计得更加直观与容易使用。有大量简单的 API 用来快速地构建代码优先的 Services,各种 Maven 的插件也使集成更加容易,支持 JAX-WS API ,支持Spring 2.0 更加简化的 XML 配置方式,等等。
  • 支持二进制和遗留协议:CXF 的设计是一种可插拨的架构,既可以支持 XML ,也可以支持非 XML 的类型绑定,比如:JSON 和 CORBA。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值