Web Service 出现的原因是实现业务接口层之间的分离,以及服务接口和调用的标准化。
Web service 是一种使用WSDL(web service Description Language)作为描述手段的远程应用,它遵循由WS-I Basic Profile1.1定义的规则,可以使用SOAP对其进行访问。
XML Schema:目的类似于DTD,他们都是用于检验XML的文档结构(正确的顺序和结构)。
XML Schema 支持20多种简单数据类型。
XML Namespace:为了在不同环境中重用标记语言(将两个或多个XML标记语言结合到一个XML文档中,需要明确标志每个元素所属的标记语言)。
XML Namespace声明使用如下格式:
xmlns:prefix="URI"
URI(Universal Resource Identifier)作为一种标志符,
是URL(Universal Resource Locator)的一个超集。
schemaLocation提供了一组Namespace-Location的值对。值对中的前一个值是XML Namespace 的URI;后一个值
则是XML Schema的物理位置(URL).下列schemaLocation属性声明了:所有属于Reservation名字空间
(http://www.titan.com/Reservation)的元素都可以使用位于http://www.titan.com/schemas/reservation.xsd
的XML Schema进行验证:xsi:schemaLocation="http://www.titan.com/Reservation
http://www.titan.com/schemas/reservation.xsd">
习惯上,我们用xsi作为XML Schema Instance名字空间的前缀。
SOAP1.1
SOAP1.1是一个简单的分布式对象协议,它与其他分布式对象协议(DCOM、CORBA的IIOP,RMI)最为主要的区别在于SOAP1.1是基于XML的。
SOAP有自己的 XML Schema定义,并大量依赖于XML Namespace的使用。
SOAP的主要目的是建立一个标准的XML框架,用于打包在不同软件平台之间进行交换的应用数据。
SOAP消息具有网络协议无关的特点。但主要使用HTTP协议进行消息交换。
使用HTTP的另一优势在于,SOAP消息可以毫无阻拦的穿透防火墙。
要与任意客户端进行通信,除了使用HTTP或SMTP(E-mail),别无他法。
在EJB3.0中,用于交换SOAP消息的API被称为Java API for XML-based Web Service(JAX-WS),他隐藏了SOAP消息
的细节。这样开发人员就可以专注于开发和调用web service了。使用JAX-WS时,你很少会与SOAP协议打交道,
这样可以极大地提高生成效率。
Web service样式
SOAP消息是Document/Literal的:指明了消息正文是一份XML Schema的实例文档。
受WS-I Basic Profile1.1允许,以及EJB3.0支持的另一种样式是RPC/Literal:指明了SOAP消息是一个带有参数
和返回值的RPC调用,每个参数及返回值都有各自的schema类型。
WSDL1.1(Web Service Description Language)
xsd是XML Schema的名字空间
WSDL是一种用来描述web service 的XML文档。他与编程语言、平台和协议无关。这使它极具灵活性,但也非常
抽象难于理解。
元素作用:
<!--message元素描述参数和返回值-->
<!--portType元素描述web service抽象接口-->
JAX-WS及EJB3.0支持两种风格的web service消息:request-response和one-way。
request-response特征:<operation>元素包含一个<input>元素,后跟一个<output>,然后是一个或多个<fault>
元素。
one-way特征:只有一个<input>元素而没有<output>或<fault>。
one-way式一般用于异步发送:发送一条消息,但不一定有响应。此外常被用于传送XML文档。而非参数和返回值
。
WSDL也支持另外两种消息风格:notification(仅有<output>没有<input>)和solicitation(一个<output>后跟一
个<input>)。不过,这两种消息风格仅在WSDL中存在,他们不受WS-I Basic Profile1.1 或 JAX-RPC的支持。
<!--binding元素告诉我们所用的协议和编码规则-->
<!--service元素告诉我们所用web service的Internet地址-->
<!--types元素描述XML复杂数据类型-->
UDDI 2.0(Universal Description,Discovery,and Integration)是一种规范,它定义了在互联网上发布和寻找
web service的标准。事实上,它是一个有着严格数据结构的web service仓库,其中数据结构所描述的内容包括
公司机构及其所提供的web service.与XML、SOAP、WSDL不同,UDDI并非web service的基础。但是在Java EE中
,它被认为是web service的一个基本要素。
UDDI是一个电子目录。