与 WS-I Basic Profile 一致的 WSDL 设计 XML 模式注意事项(一)

日期: 2007-12-24 来源:TechTarget中国

  有效的 XML 模式不一定在 WSDL 定义中有效。了解 XML 模式定义(XML Schema Definition,XSD)对 Web 服务设计有何重大影响。我们还提供了一些示例 XSD 和 WSDL,并将对其进行简单的讨论。

  引言

  可以采用很多种方式来创建 XML 模式,以使其与 W3C XML 模式规范相符。不过,有效的模式并不一定意味着其对特定的 Web 服务描述语言(Web Service Description Language,WSDL)定义也有效。本文说明了如何为 Web 服务设计恰当的构造模式,以使其同时符合 W3C WSDL 规范 (WSDL v1.1) 和 Web 服务基本概要(WS-I Basic Profile,BP v1.1)。

  在 WSDL 定义中,存在两种消息绑定样式:Document 和远程过程调用(Remote Procedure Call,RPC)。在 WS-I Basic Profile (BP) 中,对消息绑定样式进行了进一步限制。例如,SOAP 主体中的 RPC-literal 绑定必须引用 wsdl:part 中的“type”属性 (BP R2203),而 Document 绑定必须同“element”属性一起使用 (BP R2204)。属性“element”引用 XML 模式元素,而属性“type”则指示 XSD 中的 simpleType 和 complexType。简而言之,Document 样式的消息基于 XML 模式元素定义,而 RPC 消息则使用 XML 模式类型定义。

  而且,只有全局级别的元素 (BP R2206) 和类型能够在 WSDL 定义中定义。这些元素和类型是 XSD 中的 <schema> 的直接子项。所有非直接子项组件都是本地的,通常嵌套在另一个模式组件中。此处的组件将引用模式元素、complexType 或 simpleType。

  将在以下各个部分中讨论三个主要 XML 模式设计模式以及其他样式:

  Russian Doll(意为“俄罗斯娃娃”)
  Salami Slice(意为“意大利香肠片”)
  Venetian Blind(意为“软百叶窗”)
  Russian Doll

  Russian Doll 模式采用的是仅具有一个全局元素的嵌套结构,如以下示例中的元素“Employee”。所有其他组件都封装在根元素中,均已本地化。

  清单 1. 采用 Russian Doll 模式的示例 XSD

  <xs:element name=”Employee”>
  <xs:complexType>
  <xs:sequence>
  <xs:element name=”ErpPerson”>
  <xs:complexType mixed=”false”>
  <xs:sequence>
  <xs:element name=”lastName” type=”xs:string”/>
  <xs:element name=”firstName” type=”xs:string”/>
  <xs:element name=”mName” type=”xs:string”/>
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  <xs:element name=”ErpAddress”>
  <xs:complexType mixed=”false”>
  <xs:sequence>
  <xs:element name=”streetNumber” type=”xs:string”/>
  <xs:element name=”streetName” type=”xs:string”/>
  <xs:element name=”suiteNumber” type=”xs:string”/>
  <xs:element name=”city” type=”xs:string”/>
  <xs:element name=”stateOrProvince” type=”xs:string”/>
  <xs:element name=”country” type=”xs:string”/>
  <xs:element name=”postalCode” type=”xs:string”/>
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:sequence>
  </xs:complexType>
  </xs:element>

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • BEST:SOAP/XML和REST的替代方案

    虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。

  • Spring 烂!差!

    有些人可能对Spring的第一印象不太好,它真的很烂,很差吗,也许这只是你的一种偏见,它也有是自己的优点的。

  • 基于SOA架构的业务安全性研究

    SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也给业务信息安全带来了负面影响,且存在安全隐患,这些你知道吗?

  • Java读取配置文件的几种方法

    在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,那么在Java怎样读取配置文件呢?