Web 服务描述语言 (WSDL)

上传人:仙*** 文档编号:168604164 上传时间:2022-11-11 格式:DOC 页数:45 大小:211KB
收藏 版权申诉 举报 下载
Web 服务描述语言 (WSDL)_第1页
第1页 / 共45页
Web 服务描述语言 (WSDL)_第2页
第2页 / 共45页
Web 服务描述语言 (WSDL)_第3页
第3页 / 共45页
资源描述:

《Web 服务描述语言 (WSDL)》由会员分享,可在线阅读,更多相关《Web 服务描述语言 (WSDL)(45页珍藏版)》请在装配图网上搜索。

1、Web 服务描述语言 (WSDL) 1.02000年9月25日 作者(按姓氏字母顺序排列): Erik Christensen,Microsoft Francisco Curbera,IBM Greg Meredith,Microsoft Sanjiva Weerawarana,IBM 版权所有 2000 Ariba,International Business Machines Corporation,Microsoft摘要 WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定

2、到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。可以对 WSDL 进行扩展,这样无论通信时使用何种消息格式或网络协议,都可以对端点及其消息进行描述。但是,本文档中所述的绑定只涉及有关如何将 WSDL 与 SOAP 1.1、HTTP GET/POST 和 MIME 一起使用的问题。此版本的 WSDL 语言尚处于初步阶段,没有提供框架来说明端点的撰写过程。描述这些约定的完整框架应包含撰写服务的方式和表达服务行为的方式(即相应的用于发送和接收消息的规则)。服务的撰写应满足两个要求:(1) 确保类型的安全性,(2) 允许在运行时通过交换和绑定服务引用来传递引用。后面的

3、这一条对于在运行期协商约定以及捕获引用服务和代理服务的行为至关重要。WSDL 规范的作者希望及时发布 WSDL 的修订版和/或一些附加文档,包括:(1) 撰写服务的框架;(2) 描述服务行为的框架。状态 本草案介绍了 Ariba、IBM 和 Microsoft 当前在服务描述方面的一些思路。它对 NASSL、SCL 和 SDL(有关这方面的早期建议)中的一些概念进行了整理合并。目录 1. 简介 2. 服务定义 o 文档结构 o 类型 o 消息 o 端口类型 o 绑定 o 端口 o 服务 3. SOAP 绑定 o SOAP 示例 o SOAP 绑定如何扩展 WSDL o soap:binding

4、 o soap:operation o soap:body o soap:fault o soap:header o soap:address 4. HTTP GET 和 POST 绑定 o HTTP GET/POST 示例 o HTTP GET/POST 绑定如何扩展 WSDL o http:address o http:binding o http:operation o http:urlEncoded o http:urlReplacement 5. MIME 绑定 o MIME 绑定示例 o MIME 绑定如何扩展 WSDL o mime:content o mime:multipar

5、tRelated o soap:body o mime:mimeXml 6. 参考资料 o 有关 URI 的说明 o WSDL 示例的线上格式 o 扩展性元素的位置 o 架构 简介 由于通信协议和消息格式在 Web 社区中已经过标准化,因而有可能以某种结构化的方式对通信加以描述,而且实现这一点也显得日益重要。WSDL 定义了一种 XML 语法,将网络服务描述为能够进行消息交换的通信端点的集合,从而满足了这种需求。WSDL 服务定义为分布式系统提供了文档,并且可用于自动执行应用程序通信中所涉及的细节。WSDL 文档将服务定义为网络端点或端口的集合。在 WSDL 中,由于端点和消息的抽象定义已从具

6、体的网络部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用:消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将网络地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。因此,WSDL 文档在网络服务的定义中使用下列元素: Types - 数据类型定义的容器,它使用某种类型系统(如 XSD)。 Message - 通信数据的抽象类型化定义。 Operation - 对服务所支持的操作的抽象描述。 Port Type - 操作的抽象集合,这些操作由一个或多个端点支持。 Binding - 特

7、定端口类型的具体协议和数据格式规范。 Port - 定义为绑定和网络地址组合的单个端点。 Service - 相关端点的集合。 将在第二节中对这些元素进行详细说明。应该注意的是,WSDL 并没有引入新的类型定义语言。虽然 WSDL 知道,要描述消息格式需要丰富的类型系统,并且它也支持“XML 架构规范 (XSD)”作为其标准类型系统,但是,由于不可能只用一种类型系统语法来描述现在和将来的所有消息格式,因此 WSDL 允许通过扩展来使用其它类型定义语言。此外,WSDL 还定义了通用的绑定机制。通过该机制可使特定的协议、数据格式或结构与抽象的消息、操作或端点相关联。该机制还允许对抽象定义进行再次使

8、用。虽然本文档定义了上述语言扩展,但这些扩展均位于核心服务定义框架的上部。所以一定能将 WSDL 与其它绑定扩展一起使用。WSDL 文档示例 下例是一个提供股票报价的简单服务的 WSDL 定义。该服务支持名为 GetLastTradePrice 的单一操作,这个操作是通过在 HTTP 上运行 SOAP 1.1 协议来实现的。该请求接受一个类型为字符串的 ticker 符号,并返回类型为浮点数的价格。有关此定义中所用元素的详细说明,请参见第 2 节(核心语言)和第 3 节(SOAP 绑定)。示例 1 通过 HTTP 运行的 SOAP 1.1 请求/响应 soap:operation soapAc

9、tion= 我的第一次服务 soap:address location= 标记规则 1. 本文档中的关键字“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”按照 RFC-2119中的说明进行解释。2. 本文档中使用下列名称空间前缀:前缀名称空间 URI 定义wsdlhttp:/schemas.xmlsoap.org/wsdl/WSDL 框架的 WSDL 名称空间。httphttp:/schemas.xmlsoap.org/wsdl/http/H

10、TTP GET 和 POST 绑定的 WSDL 名称空间。mimehttp:/schemas.xmlsoap.org/wsdl/mime/MIME 绑定的 WSDL 名称空间。xsihttp:/www.w3.org/1999/XMLSchema-instance由 XSD 定义的实例名称空间。xsdhttp:/www.w3.org/1999/XMLSchema由 XSD 定义的架构名称空间。tns(多种)“this namespace”(tns) 是用于指当前文档的惯用前缀。(other)(多种)其它名称空间前缀仅作为示例。其中,以“”开头的 URI 代表某些与应用程序相关或与上下文相关的 U

11、RI3. 此规范使用非正式语法来描述 WSDL 文档的 XML 语法: 语法以 XML 实例的形式出现,但是值表示数据类型,而非实际值。 应按如下方式将字符追加到元素和属性后:“?”(0 或 1);“*”(0 或更多);“+”(1 或更多)。 以“”结尾的元素名称(如 或 )表示省略与上下文无关的元素/属性。 上文中尚未正式引入以粗体显示的语法,或仅在某个特定示例中出现。 是某些“other”名称空间(如 XSD 中的 #other)中的元素占位符。 以上定义的 XML 名称空间前缀用于表示所定义的元素的名称空间。 以 ?xml 开头的示例中包含足够的信息,可以满足本规范的要求,而其它示例则只

12、是一些片段,需要指定其它信息才能满足本规范的要求。 XSD 架构是作为 WSDL 语法的正式定义提供的:服务定义 本节介绍 WSDL 语言的核心元素。有关 SOAP、HTTP 和 MIME 绑定扩展的信息,请分别参见第 3 节、第 4 节和第 5 节。WSDL 文档结构 WSDL 文档实际上只是一个定义集。在根部有一个 definitions 元素,其中包含一些定义。具体语法如下所示: * ? ? ? * * * ? * * ? * ? ? ? ? ? * ? * ? * * ? * ? ? ? ? * * ? * * ? * ? * 服务是使用以下五个主要元素来定义的: types:提供用于

13、描述所交换消息的数据类型定义。 message:代表所传输数据的抽象定义。消息由一些逻辑片段构成,每个逻辑片段分别与某个类型系统中的定义相关联。 portType:指抽象操作的集合。每个操作引用一条输入消息和一条输出消息。 binding:为由特定 portType 定义的操作和消息指定具体的协议和数据格式规范。 port:为绑定指定一个地址,从而定义一个通信端点。 service:用于聚合一组相关端口。 将在第 2.2 至 2.7 节中对这些元素进行详细说明。本节的其余部分将介绍 WSDL 中有关文档命名、引用文档定义、使用语言扩展和添加上下文文档等方面的规则。文档命名和链接 可以为 WSD

14、L 文档分配一个类型为 NCNAME 的可选 name 属性(该属性将作为文档的一种轻量级形式)。或者,也可以指定一个类型为 URI 的 targetNamespace 属性。该 URI 不能是相对 URI。 WSDL 允许使用 import 语句将名称空间与文档位置相关联: *WSDL 中的 QNames 解析方法与 XML 架构规范中所述的 QNames 解析方法相似。使用 QName 可以创建对 WSDL 定义的引用。可以引用 WSDL 文档中的以下各类定义: WSDL 定义:service、port、message、bindings 和 portType 其它定义:如果通过扩展添加了其

15、它定义,这些定义应使用 QName 链接。 上面列出的每种 WSDL 定义类型都有自己的名称范围(也就是说,端口名称和消息名称绝对不会发生冲突)。同一个名称范围内的名称在 WSDL 文档中必须是唯一的。 撰写样式 使用 import 元素可以将服务定义的不同元素分别放入单独的文档中,需要时再将其导入。这种技术可以根据定义的抽象级别将其分开,这样有助于编写更为清晰的服务定义。使 用这种技术还可以对各种服务定义进行最大限度的再利用。因此,具有这种结构的 WSDL 文档更易于使用和维护。在示例 2 中,我们将定义分为数据类型定义、抽象定义和特定服务绑定三类,并将其分别放入三个文档中。当然,这种机制的

16、使用并不仅限于此例中明确出现的定义(这些定 义只使用了本规范中所定义的语言元素),也可以使用类似的方式对基于其它语言扩展的其它定义类型进行编码和再利用。示例 2. 示例 1 中所述服务的另一种撰写样式。 import namespace= location= import namespace= location= 我的第一个服务 语言的扩展性和绑定 在 WSDL 中,术语“绑定”表示将协议或数据格式信息与某个抽象实体(如 message、operation 或 portType 等)相关联的过程。WSDL 允许将代表特定技术的元素(此处称为扩展性元素)放置在 WSDL 所定义的各种元素之下。这

17、些可扩展点通常用于指定特定协议或消息格式的绑定信息,但也可用于其它用途。扩展性元素所用的 XML 名称空间不能与 WSDL 的名称空间相同。附录 A3 中详细说明了扩展性元素可在文档中的哪些位置出现。扩展性元素通常用于指定某种特定技术的绑定。为了区分特定技术绑定的语义对通信是必需的还是可选的,可以在扩展性元素上设置一个布尔型的 wsdl:required 属性。该属性的默认值为假 (false)。定义该属性的名称空间为“http:/schemas.xmlsoap.org/wsdl/soap/”。有关扩展性元素的示例,请参见第 3 节、第 4 节和第 5 节。文档 WSDL 使用可选的 wsdl

18、:document 元素作为可阅读文档的容器。该元素的内容可以是任意文本和元素(混杂在 XSD 中)。在所有 WSDL 语言元素中,都允许使用文档元素。 类型 types 元素包含与交换的消息相关的数据类型定义。为了获得最大程度的互操作性和平台中立性,WSDL 选用 XSD 作为标准类型系统,并将其当作固有类型系统。 * 可以使用 XSD 类型系统来定义消息中的类型,无论所得到的线上格式是否为 XML,也无论所得到的 XSD 架构是否验证了该特定线上格式。如果同一消息具有多个绑定,或者虽然只有一个绑定,但该绑定类型的类型系统不通用,则会出现非常有趣的情况。在这种情况下,如果使用 XSD 对抽象

19、类型进行编码,建议遵循下列原则: 使用元素形式(不要使用属性)。 不要使用对线上编码非常特殊的属性或元素(也就是说,与消息的抽象内容无关的属性或元素),例如,soap:root、soap:encodingStyle、xmi:id 和 xmi:name 等。 使用 Soap:Array 类型来为数组类型建模(无论最终形式是否实际使用 SOAP 1.1 版文档的第 5 节中指定的编码方式)。使用 ArrayOfXXX 作为数组类型的名称(其中,XXX 表示数组中项的类型)。 但是,由于不可能使用一种类型系统语法来描述现在和将来的所有抽象类型,因此,WSDL 允许通过扩展性元素来添加类型系统。扩展性

20、元素可能出现在 types 元素之下,它标识正在使用的类型定义系统并为类型定义提供 XML 容器元素。该元素的作用与 XML 架构语言的 schema 元素的作用相似。 * 消息 消息由一个或多个逻辑片段构成。每个片段使用一个消息类型属性与某个类型系统的类型相关联。消息类型属性的集合是可扩展的。WSDL 定义了以下几个消息类型属性,与 XSD 一起使用: element:使用 QName 引用一个 XSD 元素。 type:使用 QName 引用一个 XSD simpleType 或 complexType。 如果使用的名称空间与 WSDL 所用的名称空间不同,还可以定义其它消息类型属性。绑定

21、扩展性元素也可以使用消息类型属性。定义消息的语法如下所示。其中,消息类型属性以粗体显示(消息类型属性因所用类型系统而异)。 * * 消息 name 属性所指定的名称在其所在 WSDL 文档定义的全部消息中是唯一的。 片段 name 属性所指定的名称在其所在消息的所有片段中是唯一的。消息片段 片段是一种用于描述消息的逻辑抽象内容的灵活机制。绑定可以引用片段的名称来指定有关该片段的绑定专用信息。例如,如果定义用于 RPC 的消息,片段可以代表消息中的参数。但是,为了确定该片段的实际含义,必须对绑定进行检查。如果消息有多个逻辑单元,则使用多个片段元素。例如,以下消息包括“订单”和“客户”两个片段元素

22、。 但是,如果消息内容十分复杂,则需要使用另一种语法,通过直接使用类型系统来指定消息的复合结构。在下例中,主体是一个订单或一组客户。 抽象消息与具体消息 消 息定义始终被当作消息内容的抽象定义。消息绑定描述如何将抽象内容映射为具体的格式。但是,在某些情况下,抽象定义可能与一个或多个绑定的具体表示方式完 全相符或十分接近,致使这些绑定不能提供任何映射信息或只能提供少量信息;而同一消息定义的另一个绑定可能需要大量的映射信息。因此,只有在对绑定进行检 查之后,才能确定消息的实际“抽象程度”。端口类型 端口类型是一组指定的抽象操作,以及所涉及的抽象消息。 * 端口类型 name 属性所指定的名称在其所

23、在 WSDL 文档定义的所有端口类型中是唯一的。操作是通过 name 属性来命名的。WSDL 提供以下四个可得到端点支持的传输原语: 单向 (One-way):端点接收消息。 请求响应 (Request-response):端点接收消息,然后发送相关消息。 要求响应 (Solicit-response):端点发送消息,然后接收相关消息。 通知 (Notification):端点发送消息。 WSDL 称这些原语为操作。虽然可以使用两条单向消息抽象地模拟请求/响应或要求/响应,但是将其作为原语操作类型模型也很有用,因为: 经常需要使用这两个操作。 可以使顺序相互关联,而不必引入更为复杂的流信息。

24、某些端点可以只接收消息(如果它们是同步请求响应的结果)。 需要流定义时,可以通过算法从这些原语派生简单的流。 虽然请求/响应或要求/响应在 WSDL 文档中是逻辑相关的,仍然有一个特定的绑定描述具体的相关信息。例如,请求消息和响应消息可以作为一两个实际网络通信的一部分进行交换。操作使用类型为 QName 的 message 属性来引用所涉及的消息。该属性遵循 WSDL 为链接定义的规则。 单向操作 单向操作的语法是: * input 元素指定单向操作的抽象消息格式。请求响应操作 请求响应操作的语法是: * * input 元素和 output 元素分别指定请求和响应的抽象消息格式。可选的 fa

25、ult 元素为操作可能产生的错误消息(协议所特有的除外)指定抽象消息格式。请注意,请求响应操作是一个抽象的概念;必须查询特定的绑定,才能确定消息的实际发送方式:是在同一个通信中发送(例如 HTTP 请求/响应),还是作为两个独立的通信发送(例如两个 HTTP 请求)。要求响应操作 要求响应操作的语法是: * * output 元素和 input 元素分别指定所要求的请求和响应的抽象消息格式。可选的 fault 元素为操作可能产生的错误消息(协议所特有的除外)指定抽象消息格式。请注意,请求响应操作是一个抽象的概念;必须查询特定的绑定,才能确定消息的实际发送方式:是在同一个通信中发送(例如 HTT

26、P 请求/响应),还是作为两个独立的通信发送(例如两个 HTTP 请求)。通知操作 单向操作的语法是: * output元素指定通知操作的抽象消息格式。操作中的元素名称 inuput 元素和 output 元素的 name 属性所指定的名称在其所在端口类型的所有 input 元素和 output 元素中是唯一的。为了避免需要为操作中的每个 input 元素和 output 元素指定名称,WSDL 提供了一些以操作名称为基础的默认值。如果未在单向消息或通知消息中指定 name 属性,则该属性默认为操作的名称;如果未在请求响应或要求响应操作的输入或输出消息中指定 name 属性,则该属性默认为分别

27、附带有“Request”/“Solicit”或“Response”的操作名称。必须为每个 fault 元素指定名称,绑定才能指定错误消息的具体格式。fault 元素的名称在为该操作定义的错误集合中是唯一的。操作中的参数顺序 操作并不指定它们是否与类似 RPC 这样的绑定一起使用。但是,当操作与 RPC 绑定一起使用时,能够捕获原始 RPC 函数签名非常有用。因此,请求响应或要求响应操作可以通过类型为 nmtokens 的 parameterOrder 属性来指定参数名称列表。该属性的值是一个由单个空格分隔的消息片段名称列表。指定的片段必须遵循以下规则: 指定片段的顺序必须反映 RPC 签名中的参数顺序 return 值片段不在列表中出现 如果片段名称同时在输入和输出消息中出现,则片段是 in/out 参数 如果片段名称只在输入消息中出现,则片段是 in 参数 如果片段名称只在输出消息中出现,则片段是 out 参数 请注意,该信息仅作为“提示”,对于那些不关心 RPC 签名的用户,完全可以忽略。而且,即使当操作与类似 RPC 这样的绑定一起使用时,也不是必须使用

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!