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

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

  从 WSDL 的角度而言,如果组件在 Document 绑定样式中使用,则应将其定义为元素。否则就可以将模式组件定义为用于 RPC 绑定的类型。下面列出的模式满足了 WSDL 定义的以下要求:

  Document 绑定样式的 Employee 消息
  RPC 绑定样式的 Employee 消息
  Document 绑定样式的 ErpPerson 消息
  RPC 绑定样式的 ErpPerson 消息
  Document 绑定样式 ErpAddress 消息

  清单 13. 采用混合模式的示例 XSD

  <xs:element name="Employee" type="EmployeeType"/>
  <xs:complexType name="EmployeeType">
  <xs:sequence>
  <xs:element ref="ErpAddress"/>
  <xs:element ref="ErpAddress"/>
  </xs:sequence>
  </xs:complexType>

  <xs:element name="ErpPerson" type="ErpPersonType"/>
  <xs:complexType name="ErpPersonType">
  <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 name="ErpAddress">
  <xs:complexType>
  <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>
 
  就 WSDL 中使用的 XML 模式元素和类型的可访问性而言,混合模式更为灵活。它允许您通过准确遵循在 Web 服务中选择的绑定样式构建 XML 模式。

  仅类型

  有时候,会仅在 XML 模式中定义全局级别的类型,而不定义任何全局元素。这种类型的模式通常作为基础模式使用,用以封装要在其他模式中引用的数据类型。以下是仅在全局级别包含了 complexType 的 Employee 模式:

  清单 14. 仅具有全局级别 complexType 的示例 XSD

  <xs:complexType name="EmployeeType">
  <xs:sequence>
  <xs:element name="ErpPerson" type="ErpPersonType"/>
  <xs:element name="ErpAddress" type="ErpAddressType"/>
  </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ErpPersonType">
  <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:complexType name="ErpAddressType">
  <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"/>
  The corresponding WSDL <message> and <binding> definitions are listed below:on
  </xs:sequence>
  </xs:complexType>

  根据 W3C 和 WS-I BP,此模式对 RPC 样式的 WSDL 定义有效。不过,没有全局元素的模式对 XML 有效负载生成和验证用处不大。

  结束语

  总而言之,在考虑 Web 服务设计时,需要恰当考虑模式的构造方式。如果 XML 模式要用于 Document 和 RPC 样式的 Web 服务,最好在模式的全局级别同时包含元素和类型。

 

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

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

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

  • Spring 烂!差!

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

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

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

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

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