怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web Serice。
传统上,我们把计算机后台程序(Daemon)提供的功能,称为"服务"(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个"服务"。通俗地说,"服务"就是计算机可以提供的某一种功能。根据来源的不同,"服务"又可以分成两种:一种是"本地服务"(使用同一台机器提供的服务,不需要网络),另一种是"网络服务"(使用另一台计算机提供的服务,必须通过网络才能完成)。
WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL描述,Web服务的三个基本属性:
·服务做些什么——服务所提供的操作(方法)
·如何访问服务——和服务交互的数据格式以及必要协议
·服务位于何处——协议相关的地址
WSDL 文档结构
WSDL 文档是利用这些主要的元素来描述某个 web service 的:
元素 定义
<portType> web service 可执行操作的集合
<message> 操作所使用的消息
<types> web service 使用的数据类型
<binding> web service 使用的通信协议
一个 WSDL 文档的主要结构是类似这样的:
<definitions>
<types>
definition of types........
</types>
<message>
definition of a message....
</message>
<portType>
definition of a port.......
</portType>
<binding>
definition of a binding....
</binding>
</definitions>
WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。
它可描述一个 web service可被执行的操作,以及相关的消息。
可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
WSDL 消息<message> 元素定义一个操作的数据元素。
每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数
<wsdl:message> 元素所表示的消息是 WSDL 服务描述的核心。<wsdl:message> 元素是客户端
与服务提供商之间交换的 XML 数据描述,每一个 <wsdl:message> 都包含 0 到多个(一般是
1 个)<wsdl:part> 子元素。每一个 part 元素都必须有自己的 name 属性(在 <wsdl:message> 中保持惟一),和一个 element 或一个引用 XML 数据模式定义的 type 属性。
WSDL types
<types> 元素定义 web service 使用的数据类型。
为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
WSDL 实例
这是某个 WSDL 文档的简化的片段:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
在这个例子中,<portType> 元素把一个端口的名称定义为 "glossaryTerms" ,把 "getTerm" 定义为某个操作的名称。
操作 "getTerm" 拥有一个名为 "getTermRequest" 的输入消息,以及一个名为 "getTermResponse" 的输出消息。
<message> 元素可定义每个消息的部件,以及相关联的数据类型。
对比传统的编程,glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数
"getTermRequest" 和返回参数 getTermResponse 的一个函数。
WSDL 端口
<portType> 元素是最重要的 WSDL 元素。
它可描述一个 web service、可被执行的操作,以及相关的消息。
端口定义了指向某个 web service 的连接点。可以把该元素比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。
操作类型
请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:
类型 定义
One-way 此操作可接受消息,但不会返回响应。
Request-response 此操走可接受一个请求并会返回一个响应
Solicit-response 此操作可发送一个请求,并会等待一个响应。
Notification 此操作可发送一条消息,但不会等待响应。
One-Way 操作
一个 one-way 操作的例子:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
在这个例子中,端口 "glossaryTerms" 定义了一个名为 "setTerm" 的 one-way 操作。
这个 "setTerm" 操作可接受新术语表项目消息的输入,这些消息使用一条名为
"newTermValues" 的消息,此消息带有输入参数 "term" 和 "value"。不过,没有为这个操作
定义任何输出。
Request-Response 操作
一个 request-response 操作的例子:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
在这个例子中,端口 "glossaryTerms" 定义了一个名为 "getTerm" 的 request-response 操
作。"getTerm" 操作会请求一个名为 "getTermRequest" 的输入消息,此消息带有一个名为 "term" 的参数,并将返回一个名为 "getTermResponse" 的输出消息,此消息带有一个名为 "value" 的参数。
绑定到 SOAP
一个 请求 - 响应 操作的例子:
<message name="getTermRequest">
<part name="term" type="xs:string" />
</message>
<message name="getTermResponse">
<part name="value" type="xs:string" />
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest" />
<output message="getTermResponse" />
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="http://example.com/getTerm" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
binding 元素有两个属性 - name 属性和 type 属性。
name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口,在这个例子中是
"glossaryTerms" 端口。soap:binding 元素有两个属性 - style 属性和 transport 属性。
style 属性可取值 "rpc" 或 "document"。在这个例子中我们使用 document。transport 属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP。<wsdl:operation> 子元素中,必须使用一个 <soap:operation> 元素指定一个 SOAPAction 值,用来确定调用这个操作的请求。
operation 元素定义了每个端口提供的操作符。
对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码。在
这个例子中我们使用了 "literal"。
<message> 和 <portType> : 服务提供 什么操作。
<binding> : 操作 怎样被调用。
<service> : 服务位于 哪里。
The WSDL service element defines a collection of ports, or endpoints, that expose a particular binding. The basic structure of the service element is as
follows:
<definitions .... >
<service .... > *
<port name="nmtoken" binding="qname"> *
<-- extensibility element defines address details -->
</port>
</service>
</definitions>
You must give each port a name and assign it a binding. Then, within the port element, you use an extensibility element to define the address details
specific to the binding. For example, the following sample defines a service called MathService that exposes the MathSoapHttpBinding at the
http://localhost/math/math.asmx URL:
<definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:y="http://example.org/math/"
xmlns:ns="http://example.org/math/types/"
targetNamespace="http://example.org/math/"
>
...
<service name="MathService">
<port name="MathEndpoint" binding="y:MathSoapHttpBinding">
<soap:address
location="http://localhost/math/math.asmx"/>
</port>
</service>
</definitions>
The service element completes the WSDL definition.
分享到:
相关推荐
综合描述WSDL语言基础,及其WebService的一些相关知识
#### 二、Java2WSDL概述 Java2WSDL 工具用于根据Java类自动生成WSDL文件。这对于想要快速创建Web服务接口的开发者来说非常有用。生成的WSDL文件包含了服务的完整描述,包括接口定义、消息格式、数据类型等。 **...
### 一、WSDL概述 WSDL是一种基于XML的语言,用于描述网络服务,将其视为一系列操作在消息上的集合,这些消息可以包含文档导向或过程导向的信息。WSDL的描述方式是抽象的,随后将抽象的描述与具体的网络协议和消息...
#### 一、WSDL概述 **Web Services Description Language (WSDL)**,即Web服务描述语言,是一种基于XML的格式,用于描述Web服务的接口和绑定,以及如何访问这些服务。WSDL允许将Web服务表示为抽象接口,以及具体的...
一、WSDL概述 WSDL是一种规范,它详细描述了服务提供商如何暴露其功能,以及客户端如何调用这些服务。通过WSDL文档,开发者可以了解服务的输入、输出、操作以及它们之间的通信协议。WSDL文件包含以下几个关键部分: ...
**知识点1:WSDL概述** WSDL文件是Web服务的核心组成部分,它提供了服务消费者和服务提供者之间的契约。这个契约定义了服务的输入、输出、错误消息以及服务的位置(即服务端点,Endpoint)。WSDL文件通常使用XML语法...
#### 一、WSDL 概述 WSDL,全称为 Web Services Description Language(Web 服务描述语言),是一种基于 XML 的语言,用于描述 Web 服务及其如何被访问的方式。WSDL 文件提供了一个标准化的方法来定义 Web 服务的...
#### 一、WSDL概述 WSDL(Web Services Description Language)是一种用于描述网络服务的XML格式。它提供了一种标准化的方法来定义服务的抽象接口、具体绑定以及如何访问这些服务的信息。WSDL文档包含了服务的所有...
#### UDDI和WSDL概述 **UDDI(统一描述、发现与集成)** 是一个开放的标准协议,旨在为Web服务提供统一的目录服务。它允许企业和组织注册并查找Web服务的信息。UDDI的核心价值在于提供了一个集中式的场所,使企业...
1. **WSDL概述**: - WSDL是Web Services Description Language的缩写,是一个推荐的标准,由IBM、Microsoft和Ariba共同提出并发展。 - 它用于描述Web服务的调用语法,使客户端能够理解如何与服务交互,包括操作、...
#### 1、WSDL概述 WSDL(Web Services Description Language,网络服务描述语言)是一种基于XML的标准语言,用于描述Web服务及其如何被访问。WSDL提供了描述服务的方式,包括服务的位置、可用的操作以及相关的消息...
#### 一、WSDL概述 **WSDL**(Web Services Description Language)是一种基于XML的标准,主要用于描述Web服务的功能及其接口。它不仅定义了一个Web服务可以执行哪些操作,还提供了如何调用这些操作的具体信息,包括...
1. **WSDL概述**:介绍WSDL的基本概念、作用和重要性,以及其与Web服务的关系。 2. **WSDL结构**:讲解WSDL文档的基本元素,如`<wsdl:definitions>`、`<wsdl:types>`、`<wsdl:message>`、`<wsdl:portType>`、`<wsdl...
一、WSDL的概述 1.1 WSDL的基本概念 WSDL是Web服务的核心标准之一,它定义了服务提供者和消费者之间的通信协议。通过WSDL,服务提供者可以声明其服务的输入、输出、操作和地址,而服务消费者则可以通过这个描述来...
- **WSDL 概述** - WSDL 文件包含服务接口和实现两个部分,接口定义了服务的行为,而实现则指定了服务如何被访问。 - **Code Generator** - 通过读取 WSDL 文件,gSOAP 可以生成客户端的 C/C++ 代码,这些代码...
【WSDL概述】 Web服务描述语言(Web Services Description Language,简称WSDL)是一种XML格式的文档,用于详细描述Web服务的接口和通信细节。它的主要目的是让其他应用程序能够自动发现和调用Web服务,实现不同...
#### 二、WSDL概述 WSDL(Web Services Description Language)是一种基于XML的语言,用于描述网络服务的接口以及它们如何被访问和调用。WSDL提供了一种标准化的方法来定义服务的操作、消息格式以及服务端点的地址...
- **WSDL概述**:Web Services Description Language(WSDL)是一种用于描述服务接口的语言,这里介绍了如何使用WSDL来描述ONVIF服务。 - **命名空间**:为了防止名称冲突,ONVIF 2.0协议使用了特定的命名空间来组织...
7. Web服务框架服务概述:包括服务要求、WSDL概述、命名空间、类型、消息和操作等内容。 8. Web服务架构:详细说明了如何使用Web服务进行通信和信息交换。 内容细节: 例如,在IP配置部分,规范可能会详细描述如何...