`

wsdl概述

 
阅读更多
    怎样向别人介绍你的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概述.ppt

    综合描述WSDL语言基础,及其WebService的一些相关知识

    WebService之WSDL自学笔记

    本人自学WebService之WSDL自学笔记。内有详细的例子解析,下面为文档目录。...1、WSDL概述 2 1.1 WSDL 文档结构 2 1.1.1 WSDL Bindings 3 1.1.2 WSDL 端口 4 1.1.3 WSDL 消息 4 1.1.4 WSDL types 4 1.2 WSDL 实例 5

    SOAP简介很好用的 ,初期可以学

    WSDL概述 WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种...

    WSDL基础,定义格式

    一:WSDL定义 二:WSDL的基本结构--概述 三:WSDL的基本结构--详述

    WSDL绑定样式各种组合优劣势比较及实验文档.zip

    目前Web服务的相关标准是WSDL【Web服务描述语言】,一种标准的类似XML Schema的语言,用它来详细说明Web服务和SOAP【简单对象访问协议】。两份报告:研究报告,实验报告 研究报告包含内容: (1)概述 (2)问题...

    wsdl2java源码-soap-client:肥皂客户端

    wsdl2java源码Java网络服务 ...概述 每个步骤都将根据需要进行详细说明,以反映在分支上执行并由master消耗的工作。 第 94 课 — 介绍 第 95 课 — 创建 Java 客户端项目 第 96 课 — 检索 WSDL 第 97 课 — 生成存根

    01-Web服务实用技术(Web服务概述).ppt

    西北工业大学软件与微电子学院教学课件,wsdl,soap,xml,uddi等,深入浅出, 基础知识非常全,总共9个Ppt,欢迎下载

    Web Service学习

    Web Service概述,SOAP协议简介 WSDL简介 JavaSE6.0下的Web Service

    wsdl2java源码-axis14_on_wildfly_swarm:该项目是我使用WildflySwarm捆绑ApacheAxis1.4S

    wsdl2java源码概述 这个存储库有一个简单的例子,我一直在通过 Wildfly Swarm 针对一个(非常)简单的 Apache Axis 1.4 SOAP RPC servlet 应用程序创建 uber-jar。 问题复制 要重现该问题,请从此目录运行mvn ...

    JAX-WS自学笔记

    1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 2.2.1 运行wsimport 2.2.2 生成的java代码 2.3发布Web Service 2.3.1在...

    XMLSpy 2011中文版破解补丁

    ——分析和概述 + ZDNET CHINA 特稿: XSLT初步 WSDL 编辑器,WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。 它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关...

    WebService之JAX-WS自学笔记

    1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 2.2.1 运行wsimport 2.2.2 生成的java代码 2.3发布Web Service ...

    XMLSPY 2010 企业版

    ——分析和概述 + ZDNET CHINA 特稿: XSLT初步 WSDL 编辑器,WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。  它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关...

    JAVA.WEB服务.构建与运行

    《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例以及短而精确的编译、部署和执行应用程序的指示,采用明确实用的方法来处理这些技术。你将学习如何从头开始编写Web服务以及集成现有服务到你...

    软件构件与中间件技术

    概述:中间件与软件构件的动因与基本概念。 CORBA中间件:CORBA的基本原理、CORBA应用的基本开发过程(CORBA构 件的开发与使用) 、CORBA中构件接口的编写、CORBA服务端程序的编写。 Java 企业版中间件:J2EE ...

    JavaWeb服务:构建与运行

    《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例以及短而精确的编译、部署和执行应用程序的指示,采用明确实用的方法来处理这些技术。你将学习如何从头开始编写Web服务以及集成现有服务到你...

    JAVA社区交流平台网站

    2.2.5 WSDL 7 2.2.6 Velocity 8 2.2.7 Swing 8 2.2.8 Java反射 9 2.3 本章小结 9 第三章 服务开发平台的总体框架 10 3.1 前台可视化IDE的设计 11 3.2 后台的总体设计 12 3.2.1 后台RuntimeContainer容器管理模块设计...

    SOA架构概述

    对于面向同步和异步应用的,基于请求/响应模式的分布式计算来说,SOA是一场革命。一个应用程序的业务逻辑(business logic)或某些单独的功能被模块化并作为服务呈现给消费者或客户端。...Web服务描述语言(WSDL,

Global site tag (gtag.js) - Google Analytics