一、Webservice 概念与应用场景
Web service
即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术。
Web service
是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service
为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
以上介绍是我抄来的。。。
假设现在有一个A公司
开发一个web项目
并建立了相应的服务器、数据库,B公司
与A公司
达成某种py交易,A公司
给B公司
提供相关的服务。不过A公司
肯定不会直接把数据库给B公司
访问,这样太不安全了,为此A公司
可以提供访问API
,B公司通过WebService
技术去调用A公司预留的API即可。是不是理解起来就方便很多了。🤦♂️
二、Webservice标准和实现方式
1、Webservice标准
Webservice
采用标准SOAP
(Simple Object Access Protocol) 协议传输,SOAP
属于w3c标准。SOAP协议
是基于http的应用层协议,SOAP协议
传输是xml数据(SOAP协议
就是定义xml的标签格式)。
2、Webservice实现方式
Webservice
采用wsdl(Web Services Description Language)
作为描述语言[即webservice接口使用说明书],并且wsdl
属w3c标准。
xml
是webservice
的跨平台的基础,因为xml既与平台无关,又与厂商无关。
XSD
,全称为(XML Schema Datatypes)
,是W3C
为webservice
制定的一套传输数据类型,使用xml进行描述,任何编程语言写的webservice
接口在发送数据时都要转换成webservice标准
的XSD
发送。
WebService数据传输的方式:
1.SOAP:http+xml
2.Http rest :一套用来创建Web Service的方法,REST式的Web Service使用HTTP里的方法:GET,POST,DELETE, PUT
3.http自定义数据协议:比如http传输json数据,http传输xml数据等
3、WebService三要素
①、SOAP
SOAP即简单对象访问协议(Simple Object Access Protocal)是一种简单的基于XML的协议,它使应用程序通过HTTP来交换信息。简单理解为soap=http+xml,就是通过HTTP发xml数据。Soap协议版本主要使用soap1.1、soap1.2。
SOAP不是webservice的专有协议,其他应用协议也使用soap传输数据。例如,SMTP。
②、WSDL
WSDL是基于XML的用于描述WebService及其函数、参数和返回值。通俗理解wsdl是webservice的使用说明书。
③、UDDI
UDDI是一种目录服务,通过它,企业可注册并搜索Webservices。企业将自己提供的Web Service注册在UDDI,也可以使用别的企业在UDDI注册的web service服务,从而达到资源共享。UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。
目前大部分企业使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web service的地址,可以直接通过WSDL调用webservice。
三、Webservice开发规范
JAVA中共有三种方式实现WebService开发规范,分别是JAX-WS(JAX-RPC)
、JAXM & SAAJ
、JAX-RS
1、JAX-WS
JAX-WS
,全称为 Java API for XML-Based Webservices
。早期的基于SOAP
的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call)
,目前已经被JAX-WS
规范取代。从jdk1.5
开始支持JAX-WS2.0
版本,jdk1.6.0_13
以后的版本支持2.1版本,jdk1.7
支持2.2版本。
也就是说java提供了一个jar包来实现webservice
。
2、JAXM&SAAJ
JAXM
,全称为JAVA API For XML Message
。主要定义了包含了发送和接收消息所需的API
,SAAJ(SOAP With Attachment API For Java,JSR 67)
是与JAXM
搭配使用的API
,为构建SOAP包
和解析SOAP包
提供了重要的支持,支持附件传输等。JAXM & SAAJ
也基于SOAP 的Web 服务。
与JAX-WS
相比,JAXM&SAAJ
暴漏了SOAP
更多的底层细节,编码比较麻烦。而JAX-WS
更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心SOAP
的任何细节。
3、JAX-RS
JAX-RS
是JAVA 针对REST(Representation State Transfer)
风格制定的一套Web服务规范。由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6
一起发行。
四、JAX-WS开发规范
1、Webservice入门Demo(服务端)
需求:提供一个天气的WebService服务器接口,以查询天气为例。