📜  WSDL-快速指南

📅  最后修改于: 2020-11-09 05:23:28             🧑  作者: Mango


WSDL代表Web服务描述语言。这是描述Web服务的标准格式。 WSDL由Microsoft和IBM联合开发。

WSDL的功能

  • WSDL是用于分散式和分布式环境中信息交换的基于XML的协议。

  • WSDL定义描述了如何访问Web服务以及它将执行什么操作。

  • WSDL是用于描述如何与基于XML的服务接口的语言。

  • WSDL是通用描述,发现和集成(UDDI)(基于XML的全球业务注册中心)的组成部分。

  • WSDL是UDDI使用的语言。

  • WSDL的发音为“ wiz-dull”,拼写为“ WSD-L”。

WSDL用法

WSDL通常与SOAP和XML Schema结合使用,以通过Internet提供Web服务。连接到Web服务的客户端程序可以读取WSDL,以确定服务器上可用的功能。所使用的任何特殊数据类型都以XML模式的形式嵌入WSDL文件中。然后,客户端可以使用SOAP实际调用WSDL中列出的功能之一。

WSDL的历史

WSDL 1.1是由Ariba,IBM和Microsoft作为W3C注释提交的,用于描述2001年3月针对XML协议的W3C XML活动的服务。

WSDL 1.1尚未得到万维网联盟(W3C)的认可,但是它刚刚发布了2.0版的草案,该草案将成为推荐(正式标准),因此得到W3C的认可。

WSDL-元素

WSDL将Web服务分为三个特定的,可识别的元素,这些元素一旦定义就可以合并或重用。

可以分别定义的WSDL的三个主要元素是-

  • 种类
  • 运作方式
  • 捆绑

WSDL文档具有各种元素,但是它们包含在这三个主要元素中,可以将它们开发为单独的文档,然后可以将它们组合或重新使用以形成完整的WSDL文件。

WSDL元素

WSDL文档包含以下元素-

  • 定义-它是所有WSDL文档的根元素。它定义了Web服务的名称,声明了文档其余部分中使用的多个名称空间,并包含此处描述的所有服务元素。

  • 数据类型-消息中使用的数据类型采用XML模式的形式。

  • 消息-它是数据的抽象定义,以消息的形式出现,可以作为整个文档或作为要映射到方法调用的参数来呈现。

  • 操作-这是消息操作的抽象定义,例如将接受和处理消息的命名方法,消息队列或业务流程。

  • 端口类型-它是映射到一个或多个端点的一组抽象操作,定义了绑定操作的集合;抽象的操作集合可以通过各种绑定映射到多个传输。

  • 绑定-这是为特定端口类型定义的操作和消息的具体协议和数据格式。

  • 端口-它是绑定和网络地址的组合,提供服务通信的目标地址。

  • 服务-它是相关端点的集合,包含文件中的服务定义;服务将绑定映射到端口并包括任何可扩展性定义。

除了这些主要元素之外,WSDL规范还定义了以下实用程序元素-

  • 文档-该元素用于提供易于阅读的文档,并且可以包含在任何其他WSDL元素内。

  • 导入-此元素用于导入其他WSDL文档或XML模式。

– WSDL部件通常是使用支持Web服务的工具自动生成的。

WSDL文档结构

WSDL文档的主要结构如下所示:


   
      definition of types........
   

   
      definition of a message....
   

   
      
         definition of a operation.......  
      
   

   
      definition of a binding....
   

   
      definition of a service....
   

WSDL文档还可以包含其他元素,例如扩展元素和service元素,这些元素使得可以在一个WSDL文档中将几个Web服务的定义组合在一起。

继续进行分析WSDL文档的示例。

WSDL-示例

下面给出的是一个WSDL文件,用于演示一个简单的WSDL程序。

让我们假设该服务提供了一个单一的公共可用函数,称为sayHello 。该函数需要单个字符串参数,并返回单个字符串问候语。例如,如果您传递参数world,则服务函数sayHello返回问候语“ Hello,world!”。

HelloService.wsdl文件的内容-


 
   
      
   
    
   
      
   

   
      
         
         
      
   

   
      
      
         
         
            
         
        
         
            
         
      
   

   
      WSDL File for HelloService
      
         

实例分析

  • 定义-HelloService

  • 类型-使用内置数据类型,它们在XMLSchema中定义。

  • 消息

    • sayHelloRequest-firstName参数

    • sayHelloresponse-问候语返回值

  • 端口类型-由请求和响应服务组成的sayHello操作。

  • 绑定-使用SOAP HTTP传输协议的方向。

  • 服务-可在http://www.examples.com/SayHello/获得的服务

  • 端口-将绑定与URI http://www.examples.com/SayHello/关联,可以在其中访问正在运行的服务。

WSDL-元素

元素必须是所有WSDL文档的根元素。它定义了Web服务的名称。

这是上一章中使用definitions元素的代码。


   ................................................

从上面的示例,我们可以得出结论,定义

  • 是所有其他元素的容器。

  • 指定将此文档称为HelloService

  • 指定targetNamespace属性。 targetNamespace是XML Schema的约定,使WSDL文档能够引用其自身。在此示例中,我们将targetNamespace指定为http://www.examples.com/wsdl/HelloService.wsdl

  • 指定默认名称空间:xmlns = http://schemas.xmlsoap.org/wsdl/。因此,假定所有没有名称空间前缀的元素(例如messageportType )都是默认WSDL名称空间的一部分。

  • 指定在整个文档其余部分中使用的大量名称空间。

–命名空间规范不要求文档出现在给定位置。重要的一点是,您指定的唯一值不同于定义的所有其他名称空间。

WSDL-元素

Web服务需要定义其输入和输出以及如何将它们映射到服务中和从服务中映射出来。 WSDL 元素负责定义Web服务使用的数据类型。类型是XML文档或文档部分。

  • types元素描述了客户端和服务器之间使用的所有数据类型。

  • WSDL并不仅限于特定的键入系统。

  • WSDL使用W3C XML Schema规范作为定义数据类型的默认选择。

  • 如果服务仅使用XML Schema内置的简单类型(例如字符串和整数),则不需要types元素。

  • WSDL允许在单独的元素中定义类型,以便这些类型可在多个Web服务中重用。

这是摘自W3C规范的一段代码。此代码描述了如何在WSDL中使用type元素。


   
        
      
         
            
               
            
         
      
        
      
         
            
               
            
         
      
        
   

数据类型解决了识别要与Web服务一起使用的数据类型和格式的问题。类型信息在发送方和接收方之间共享。因此,邮件的收件人需要访问您用于对数据进行编码的信息,并且必须了解如何对数据进行解码。

WSDL-元素

元素描述了Web服务提供商和使用者之间正在交换的数据。

  • 每个Web服务都有两条消息:输入和输出。

  • 输入描述Web服务的参数,输出描述Web服务的返回数据。

  • 每个消息包含零个或多个参数,其中一个用于Web服务函数的每个参数。

  • 每个参数都与容器元素中定义的具体类型相关联。

让我们从WSDL示例章节中获取一段代码-


   



   

在此,定义了两个消息元素。第一个代表请求消息SayHelloRequest ,第二个代表响应消息SayHelloResponse

这些消息中的每一个都包含单个part元素。对于请求,该部分指定函数参数;在这种情况下,我们指定一个firstName参数。对于响应,该部分指定函数的返回值。在这种情况下,我们指定一个问候返回值。

WSDL-元素

元素组合了多个消息元素,以形成完整的单向或往返操作。

例如, 可以将一个请求和一个响应消息组合为一个请求/响应操作。这是SOAP服务中最常用的。 portType可以定义多个操作。

让我们从WSDL示例章节中获取一段代码-


   
      
      
   

  • portType元素定义了一个单独的操作,称为sayHello

  • 该操作由一个输入消息SayHelloRequest和一个

  • 输出消息SayHelloResponse

操作方式

WSDL支持四种基本操作模式-

单程

该服务收到一条消息。因此,该操作只有一个输入元素。单向操作的语法是-

 
    *
      
         
      
   

请求-响应

该服务接收消息并发送响应。因此,该操作具有一个输入元素,然后是一个输出元素。为了封装错误,还可以指定一个可选的故障元素。请求-响应操作的语法是-


    *
      
         
         
         *
      
   

征求回应

该服务发送消息并接收响应。因此,该操作具有一个输出元素,然后是一个输入元素。为了封装错误,还可以指定一个可选的故障元素。请求响应操作的语法为-


    *
      
         
         
         *
      
   

通知

该服务发送一条消息。因此,该操作只有一个输出元素。以下是通知操作的语法-


    *
      
         
      
   

WSDL-元素

元素提供了有关如何实际通过网络传输portType操作的特定详细信息。

  • 可以通过多种传输方式使绑定可用,包括HTTP GET,HTTP POST或SOAP。

  • 绑定提供有关使用什么协议来传输portType操作的具体信息。

  • 绑定提供服务所在的信息。

  • 对于SOAP协议,绑定是 ,而传输是基于HTTP协议的SOAP消息。

  • 您可以为单个portType指定多个绑定。

绑定元素具有两个属性: nametype属性。


name属性定义绑定的名称,type属性指向绑定的端口,在本例中为“ tns:Hello_PortType”端口。

SOAP绑定

WSDL 1.1包括针对SOAP 1.1的内置扩展。它允许您指定特定于SOAP的详细信息,包括SOAP标头,SOAP编码样式和SOAPAction HTTP标头。 SOAP扩展元素包括以下内容-

  • 肥皂:绑定
  • 肥皂:操作
  • 肥皂:身体

肥皂:绑定

该元素指示将通过SOAP使绑定可用。样式属性指示SOAP消息格式的整体样式。 rpc的样式值指定RPC格式。

传输属性指示SOAP消息的传输。值http://schemas.xmlsoap.org/soap/http表示SOAP HTTP传输,而http://schemas.xmlsoap.org/soap/smtp表示SOAP SMTP传输。

肥皂:操作

该元素指示将特定操作绑定到特定SOAP实现。 soapAction属性指定将SOAPAction HTTP标头用于标识服务。

肥皂:身体

该元素使您可以指定输入和输出消息的详细信息。对于HelloWorld,body元素指定SOAP编码样式和与指定服务关联的名称空间URN。

这是示例章节中的代码-


   
   
      
            
      
         
      
            
      
         
      
   

WSDL-<端口>元素

元素通过指定绑定的单个地址来定义单个端点。

这是指定端口的语法-


    *
       *
         
      
   

  • port元素具有两个属性: namebinding

  • name属性在封闭的WSDL文档中定义的所有端口之间提供唯一的名称。

  • 绑定属性是指使用WSDL定义的链接规则的绑定。

  • 绑定可扩展性元素用于指定端口的地址信息。

  • 一个端口不得指定多个地址。

  • 端口不得指定地址信息以外的任何绑定信息。

这是来自示例章节的一段代码-


   WSDL File for HelloService
   
      

WSDL-元素

元素定义Web服务支持的端口。对于每种受支持的协议,都有一个端口元素。服务元素是端口的集合。

  • Web服务客户端可以从service元素中学到以下内容-

    • 在哪里访问服务,
    • 通过哪个端口访问Web服务,以及
    • 如何定义通信消息。
  • 服务元素包括一个文档元素,以提供易于阅读的文档。

这是来自示例章节的一段代码-


   WSDL File for HelloService
   
      

端口元素的绑定属性将服务的地址与Web服务中定义的绑定元素相关联。在此示例中,这是Hello_Binding


   
   
      
        
      
         
      
            
      
         
      
   

WSDL-摘要

在本教程中,我们已经介绍了WSDL的基础。下一步是学习SOAP,UDDI和Web服务。

网页服务

Web服务是开放标准(XML,SOAP,HTTP等)的Web应用程序,它们与其他Web应用程序进行交互以交换数据。

要了解有关Web服务的更多信息,请访问Web服务教程。

UDDI

UDDI是用于描述,发布和查找Web服务的基于XML的标准。

要了解有关UDDI的更多信息,请访问UDDI教程。

肥皂

SOAP是一种简单的基于XML的协议,允许应用程序通过HTTP交换信息。

要了解有关SOAP的更多信息,请访问SOAP教程。

WSDL-参考

如果您有兴趣将您的公司,网站或书籍作为WSDL资源列出,请联系webmaster@tutorialspoint.com

WSDL规范列表

Specification Draft / Proposal W3C Recommendation
     
WSDL 1.1 Note

15. Mar 2001

 
WSDL Usage Scenarios

04. Jun 2002

 
WSDL Requirements

28. Oct 2002

 
WSDL Architecture

11. Feb 2004

 
WSDL Glossary

11. Feb 2004

 
WSDL Usage Scenarios

11. Feb 2004

 
WSDL 1.2 Core Language

11. Jun 2003

 
WSDL 1.2 Message Patterns

11. Jun 2003

 
WSDL 1.2 Bindings

11. Jun 2003

 
WSDL 2.0 Primer

27. Mar 2006

 
WSDL 2.0 Core Language

27. Mar 2006

 
WSDL 2.0 Adjuncts

27. Mar 2006

 
WSDL 2.0 SOAP 1.1 Binding

27. Mar 2006

 
WSDL 2.0 RDF Mapping

18. May 2006

 
WS Addressing Core  

09. May 2006

WS Addressing SOAP Binding  

09. May 2006

Web Architecture  

15. Dec 2004