`

WSDL & SOAP & Web Service (转)

阅读更多

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

WSDL 发展史:

1,在 2001 年 3 月,WSDL 1.1 被 IBM、微软作为一个 W3C 纪录(W3C note)提交到有关 XML 协议的 W3C XML 活动,用于描述网络服务。

2,在 2002 年 7 月,W3C 发布了第一个 WSDL 1.2 工作草案。

WSDL的主要元素:

元素 定义
<portType> web service 执行的操作
<message> web service 使用的消息
<types> web service 使用的数据类型
<binding> web service 使用的通信协议

WSDL 端口

WSDL 端口可描述由某个 web service 提供的界面(合法操作)。

<portType> 元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息。

可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

操作类型

请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:

类型 定义
One-way 此操作可接受消息,但不会返回响应。
Request-response 此操走可接受一个请求并会返回一个响应
Solicit-response 此操作可发送一个请求,并会等待一个响应。
Notification 此操作可发送一条消息,但不会等待响应。

WSDL 消息

<message> 元素定义一个操作的数据元素。

每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

<message> 元素可定义每个消息的部件 ,以及相关联的数据类型。

WSDL types

<types> 元素定义 web service 使用的数据类型。

为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型

WSDL Bindings

<binding> 元素为每个端口定义消息格式协议细节

binding 元素 有两个属性 - name 属性和 type 属性。

name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口,在这个例子中是 "glossaryTerms" 端口。

soap:binding 元素 有两个属性 - style 属性和 transport 属性。

style 属性可取值 "rpc" 或 "document"。在这个例子中我们使用 document。transport 属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP。

operation 元素 定义了每个端口提供的操作符。

对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码。在这个例子中我们使用了 "literal"。

SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。在我们的 SOAP 教程中,你将了解到什么是 SOAP,以及它如何在应用程序之间交换信息。

SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。

或者更简单地说:SOAP 是用于访问网络服务的协议。

什么是 SOAP?

  • SOAP 指简易对象访问协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间 的通信
  • SOAP 是一种用于发送消息 的格式
  • SOAP 被设计用来通过因特网 进行通信
  • SOAP 独立于平台
  • SOAP 独立于语言
  • SOAP 基于 XML
  • SOAP 很简单并可扩展
  • SOAP 允许您绕过防火墙
  • SOAP 将被作为 W3C 标准 来发展

Why SOAP?

对于应用程序开发来说,使程序之间进行因特网通信是很重要的。

目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。

通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。

SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。


SOAP 构建模块

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body 元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

语法规则

这里是一些重要的语法规则:

  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

encodingStyle 属性

SOAP 的 encodingStyle 属性用于定义在文档中使用的数据类型。此属性可出现在任何 SOAP 元素中,并会被应用到元素的内容及元素的所有子元素上。SOAP 消息没有默认的编码方式。

SOAP Header 元素

可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。

actor 属性

通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。

SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。

mustUnderstand 属性

SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。

假如您向 Header 元素的某个子元素添加了 "mustUnderstand="1",则它可指示处理此头部的接收者必须认可此元素。假如此接收者无法认可此元素,则在处理此头部时必须失效。

SOAP Body 元素

必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。

SOAP Fault 元素

来自 SOAP 消息的错误消息被携带于 Fault 元素内部。

如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。

SOAP 的 Fault 元素用于下列子元素:

子元素 描述
<faultcode> 供识别故障的代码
<faultstring> 可供人阅读的有关故障的说明
<faultactor> 有关是谁引发故障的信息
<detail> 存留涉及 Body 元素的应用程序专用错误信息

SOAP Fault Codes

在下面定义的 faultcode 值必须用于描述故障时的 faultcode 元素中:

错误 描述
VersionMismatch SOAP Envelope 元素的无效命名空间被发现
MustUnderstand Header 元素的一个直接子元素(带有设置为 "1" 的 mustUnderstand 属性)无法被理解。
Client 消息被不正确地构成,或包含了不正确的信息。
Server 服务器有问题,因此无法处理进行下去。

HTTP 协议

HTTP 在 TCP/IP 之上进行通信。HTTP 客户机使用 TCP 连接到 HTTP 服务器。在建立连接之后,客户机可向服务器发送 HTTP 请求消息:

POST /item HTTP/1.1
Host: 189.123.345.239
Content-Type: text/plain
Content-Length: 200

随后服务器会处理此请求,然后向客户机发送一个 HTTP 响应。此响应包含了可指示请求状态的状态代码:

200 OK
Content-Type: text/plain
Content-Length: 200

在上面的例子中,服务器返回了一个 200 的状态代码。这是 HTTP 的标准成功代码。

假如服务器无法对请求进行解码,它可能会返回类似这样的信息:

400 Bad Request
Content-Length: 0

SOAP HTTP Binding

SOAP 方法指的是遵守 SOAP 编码规则的 HTTP 请求/响应。

HTTP + XML = SOAP

SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。

HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。

Content-Type

SOAP 的请求和响应的 Content-Type 头可定义消息的 MIME 类型,以及用于请求或响应的 XML 主体的字符编码(可选)。

语法

Content-Type: MIMEType; charset=character-encoding 

例子

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Content-Length

SOAP 的请求和响应的 Content-Length 头规定请求或响应主体的字节数。

Web Services 可以将应用程序转换为网络应用程序。

通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。

Web Services 可以被其他应用程序使用。

通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UXIX 服务器相连接。

基本的 Web Services 平台是 XML+HTTP。

Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。

什么是Web Services?

  • Web Services 是应用程序组件
  • Web Services 使用开放协议进行通信
  • Web Services 是独立的(self-contained)并可自我描述
  • Web Services 可通过使用UDDI来发现
  • Web Services 可被其他应用程序使用
  • XML 是 Web Services 的基础

它如何工作?

基础的 Web Services 平台是 XML + HTTP。

HTTP 协议是最常用的因特网协议。

XML 提供了一种可用于不同的平台和编程语言之间的语言。

Web services 平台的元素:

  • SOAP (简易对象访问协议)
  • UDDI (通用描述、发现及整合)
  • WSDL (Web services 描述语言)

Web services 平台是简单的可共同操作的消息收发框架。它仍然缺少许多诸如安全和路由等重要的特性。但是,一旦 SOAP 变得更加高级,这些事项就会得到解决。

Web services 有望使应用程序更加容易通信。

Web services 把 Web 应用程序提升到了另外一个层面

通过使用 Web services,您的应用程序可向全世界发布功能或消息。

Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。

通过 Web services,您的会计部门的 Win 2k 服务器可与 IT 供应商的 UNIX 服务器进行连接。

Web services 有两种类型的应用

可重复使用的应用程序组件

有一些功能是不同的应用程序常常会用到的。那么为什么要周而复始地开发它们呢?

Web services 可以把应用程序组件作为服务来提供,比如汇率转换、天气预报或者甚至是语言翻译等等。

比较理想的情况是,每种应用程序组件只有一个最优秀的版本,这样任何人都可以在其应用程序中使用它。

连接现有的软件

通过为不同的应用程序提供一种链接其数据的途径,Web services有助于解决协同工作的问题。

通过使用 Web services,您可以在不同的应用程序与平台之间来交换数据。

Web Services 拥有三种基本的元素。

它们是:SOAP、WSDL 以及 UDDI。

什么是UDDI?

UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。

  • UDDI 指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。
  • UDDI 是一种用于存储有关 web services 的信息的目录。
  • UDDI 是一种由 WSDL 描述的网络服务接口目录。
  • UDDI 经由 SOAP 进行通迅。
  • UDDI 被构建于 Microsoft .NET 平台之中。
分享到:
评论

相关推荐

    D6 SOAP_WEB SERVICE

    标题"D6 SOAP_WEB SERVICE"指的是使用Delphi编程语言开发基于SOAP(简单对象访问协议)的Web服务。在本文中,我们将深入探讨这个主题,了解如何使用Delphi构建Web服务以及SOAP在其中的作用。 首先,让我们了解一下...

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》(

    4. **Web Service开发**:包括如何定义、发布和调用Web Service,如使用WSDL(Web Service Description Language)和UDDI(Universal Description, Discovery, and Integration)。 5. **实例分析**:书中将提供...

    实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著.zip

    《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维编著的一本专业书籍,主要面向的是希望深入理解和应用Delphi6、Kylix2、SOAP以及Web Service技术的开发者。这本书详细介绍了如何利用这些...

    WSDL样式详解,soap中Rpc和Document的区别

    Web 服务描述语言(WSDL,Web Service Description Language)是一种XML格式,用于定义网络服务的接口,包括服务的位置、操作及如何与这些服务交互。在WSDL文档中,SOAP(Simple Object Access Protocol)绑定部分...

    SOAP.rar_SOAP java_Web Service SOAP_java soap_java web service_s

    5. **SOAP客户端**:为了调用SOAP Web服务,客户端需要创建一个代理类,该代理类由JAX-WS自动生成,基于服务的WSDL。通过代理类,客户端可以像调用本地方法一样调用远程服务。 6. **JAX-WS和 Axis**:JAX-WS是Java ...

    利用Zend Studio for Eclipse生成wsdl文件,php调用web service

    通过SoapClient类,PHP可以轻松地与任何遵循WSDL标准的Web Service进行交互。 总结:本文详细阐述了使用Zend Studio for Eclipse创建和调用PHP Web Service的全过程,涵盖了从创建项目、编写服务程序、生成WSDL文件...

    Java解析WSDL&Jar.7z

    Java解析WSDL(Web Service Description Language)是一种标准的XML格式,用于定义Web服务接口,包括其功能、消息格式以及如何通过网络调用这些服务。在Java中,处理WSDL文件通常涉及SOAP(Simple Object Access ...

    Web Service描述语言 WSDL 详解.pdf

    部分内容:Web Service描述语言(WSDL)向这种WebService的提供商和用户推出了方便的协调工作的方法,使我们能更容易的获得SOAP的种种好处。 **重要知识点详解:** ### Web Service描述语言 (WSDL) Web Service描述...

    Web Service描述语言 WSDL 详解(转)

    **Web Service描述语言(WSDL)详解** Web Service描述语言(WSDL)是一种XML格式的规范,用于描述网络服务,特别是Web服务。WSDL文件定义了服务的位置、使用的消息协议以及如何调用这些服务。它是Web服务接口的...

    webservice工具,针对wsdl、soap进行测试的小软件

    WSDL(Web Services Description Language)是描述Web服务的标准语言,SOAP(Simple Object Access Protocol)则是用于在Web上交换结构化信息的协议。本文将详细介绍这两个概念以及与之相关的测试工具。 **WSDL...

    实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著

    《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维撰写的一本专业书籍,主要涵盖了使用Delphi6和Kylix2进行SOAP(简单对象访问协议)以及Web Service开发的核心技术和实践应用。这本书是...

    Web+Service学习SOAP协议简介WSDL简介

    Web Service 学习 SOAP 协议简介 WSDL 简介 Web Service 概述 Web Service 是一种软件系统,旨在支持跨网络的机器间相互操作交互。它通常被定义为一组模块化的 API,可以通过网络进行调用,以执行远程系统的请求...

    《C++ Builder 6 SOAP Web Service》配套光盘

    《C++ Builder 6 SOAP Web Service》是一本深入讲解如何使用C++ Builder 6开发SOAP(Simple Object Access Protocol)Web服务的专业书籍。SOAP是一种基于XML的协议,它允许应用程序通过Internet进行通信,使得不同...

    VB6 & SOAP & WebService

    2. **构建SOAP请求**:根据WebService的WSDL(Web Service Description Language)文档,确定需要调用的方法和参数,然后使用VB6的字符串处理函数构造SOAP请求的XML格式。 3. **发送请求**:使用XMLHTTP对象的Open和...

    delphi 6/Kylik2 soap/Web Service程序设计篇下册+代码,非常好的教程。

    8. **互操作性**: 使用SOAP和标准WSDL的Web Service具有高度的互操作性,这意味着无论使用哪种编程语言或平台,只要支持SOAP,都可以与之通信。这使得Delphi 6创建的Web Service能够与Java、.NET、PHP等其他平台的...

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》源码

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》是一本专注于使用Delphi 6和Kylix 2开发SOAP(简单对象访问协议)和Web Service应用的实战指南。这本书的源码提供了丰富的实例,帮助读者深入理解如何在这些编程...

    SOAPWeb Service 开发

    - 将开发完成的SOAP Web Service部署到服务器上,并通过WSDL文件描述服务接口。 - 测试服务的可用性和正确性。 - **客户端访问SOAP Web Service**: - 编写客户端程序,通过发送SOAP请求调用远程Web Service中的...

    Web Service 解读天气预报WSDL获取天气程序

    Web Service的客户端和服务器端通过SOAP(Simple Object Access Protocol)进行通信,SOAP是基于XML的消息传递协议,它封装了请求和响应数据。WSDL文件则提供了服务的规范,包括服务的地址(endpoint)、操作...

    wsdl.rar_ wsdl_WSDL_wsdl soap

    **WSDL(Web Services Description Language)详解** WSDL,全称Web Services Description Language,是一种XML格式,用于描述网络服务,特别是Web服务。它定义了服务的位置、服务接口以及如何调用这些服务。WSDL...

Global site tag (gtag.js) - Google Analytics