01_入门

【何为webService?】

 WebService即Web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术,即跨平台远程调用技术

1. 采用标准SOAP(Simple Object Access Protocol)协议传输,SOAP属于w3c标准,SOAP协议是基于HTTP的应用层的协议,SOAP协议传输的是XML数据。

2.采用wsdl作为描述语言,相当于webService的使用说明书,wsdl属于w3c标准。

3.xml是WebService实现跨平台的基础,xml的主要优点在于它即与平台无关,又与厂商无关。

4.XSD(XML Schema Datatypes),任何编程语言写的WebService接口在发送数据时都要转换成WebService标准的XSD发送,w3c为其制定了一套传输数据类型。

5.当前的 非SOAP协议 的WebService以轻量为 首要目标,比如 REST WebService也是WebService的一种方式。

【WebService的三要素】

1.SOAP

SOAP(Simple Object Access Protocol)即简单访问协议,是一种简单的基于XML协议的,它使应用程序通过HTTP来交换信息,简单理解就是: SOAP=HTTP+XML。

SOAP协议主要使用的版本是 SOAP1.1、 SOAP1.2

SOAP并不是WebService专有的协议,其它协议也使用SOAP传输数据,如SMTP、tr069等

2.WSDL(重点)

WSDL(Web Service Description Language)网络服务描述语言(可以描述网络服务,也可以定位网络服务)。

是一种使用XML编写的文档,用于描述WebService及其方法、参数和返回值,可以规定服务的位置、以及服务提供的方法。

通俗理解就是WSDL是WEbService的使用说明书。

3.UDDI

UDDI是一种目录服务,通过它,企业可以注册并搜索WebService,企业将自己提供的WebService注册在UDDI,也可以使用别的企业在UDDI注册的WebService服务,从而达到资源共享的目的。

UDDI旨在将全球的WebService资源进行共享,促进全球经济合作。

但是使用WebService并不是必须使用UDDI,因为用户通过WSDL可以知道WebService的地址,可以直接投WSDL调用WebService。

【WebService在Java中实现的三种规范】

1.JAX-WS

JAX-WS(Java API for XML-Base WebServices),早期基于SOAP的Java的Web服务规范JAX-RPC目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。

2.JAXM&SAAJ(一般不使用)

JAXM(Java API for XML Message)主要定义了发送和接受数据所需的API,SAAJ(SOAP With Attachment API For Java)是与JAXM搭配使用的API,为构建SOAP包和解析SOAP包提供了重要的支持,支持附件传输等。JAXM&SAAJ与JAX-WS都是基于SOAP的Web服务,相比之下JAXM&SOAP暴露了更多SOAP更多的底层细节,编码较为麻烦,而JAX-WS更加抽象,隐藏了更多的细节,更加面向对象,实现时基本不需挂心SAOP的任何细节。

3.JAX-RS

JAX-RS是针对REST(Representation State Transfer)风格指定的一套Web服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

【WebService应用场景】

1.应用程序集成

  分布式程序之间进行集成使用WebService直接调用服务层方法,不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性,因为WebService支持跨平台且遵循表尊协议SOAP。

2.软件重用

  将一个软件的功能以WebService方式暴露出来,达到软件重用。如待会后面要写的天气预报功能,将天气查询的功能以WebService接口方式暴露出来,使其非常容易集成在其它系统中。还例如一个第三方物流系统将快递查询、快递等级暴露出来,从而集成在电子商务系统中。

【对使用WebService的建议】

【不建议使用】

场景:同构程序之间的通信

  同构程序是指采用相同的编程语言的程序之间的通信。例如java远程调用RMI技术就可以非常高效地实现远程调用,使用简单,必须保证两边的应用都是java编写才可以。

  只要有其它方法比WebService更加高效更可行,就不要使用WebService,因为Web跨平台的远程调用方法不止WebService一种。RMI是Java语言提供的远程调用技术,RMI速度会比WebService块的多,但比socket要慢。

【建议使用】

场景1:公开接口

  面向互联网公开的接口,例如某公司产品促销的介绍、股票信息查询,因为WebService是互联网的一个标准协议,将接口发布为WebService,其它公司可以很容易的调用。

场景2:调用WebService服务端

  作为客户要调用别人的接口,对方的接口使用的是WebService,这时你也用WebService开发客户端,且协议版本要和服务端保持一致。

【WebService优缺点】

优点:

1.采用XML支持跨平台远程调用

2.基于HTTP的SOAP协议,可以穿越防火墙

3.支持面向对象开发。

4.有利于软件和数据重用

缺点:

  由于SOAP是基于XML传输的,本身使用XML传输会传输一些无关的东西从而使效率不高,随着SOAP协议的完善,SOAP协议增加了许多内容,这样就导致了使用SOAP协议去完成简单的数据传输效率不高。如果直接使用HTTP传输自定义数据内容比WebService开发更快捷,例如第三方付支付公司的支持接口。

原文地址:https://www.cnblogs.com/HigginCui/p/5831176.html