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

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

  在这种情况下,能在 WSDL 定义中引用的元素只有根元素“Employee”。因此,此模式仅能用于在 WSDL 中定义 Document 样式的 Employee 消息。下面列出了示例 WSDL <message> 和 <binding>,且具有名为 publishEmployeeService 的操作,此操作的输入消息基于 Employee 模式。

  清单 2. Document 样式的 Employee 消息的 WSDL 定义

  …
  <wsdl:message name="publishEmployeeServiceRequest">
  <wsdl:part name="employee" element="typeIn:Employee">
  <wsdl:documentation>publish employee data</wsdl:documentation>
  </wsdl:part>
  </wsdl:message>
  …
  <wsdl:binding … >
  <soap:binding … />
  <wsdl:operation name="publishEmployeeService">
  <soap:operation style="document"/>
  <wsdl:input name="employee">
  <soap:body use="literal"/>
  </wsdl:input>
  …
  </wsdl:operation>
  </wsdl:binding>
 
  请注意,wsdl:binding 部分中的 wsdl:input "name" 属性的值与 wsdl:message 中的“name”属性的值相同,而后者引用了 Employee 元素。typeIn 是输入模式 targetNamespace 的前缀,而 Employee 为模式的根元素。

  Russian Doll 模式提供了具有最低扩展性的模式结构。在上面列出的示例中,除了根元素之外的所有组件均已本地化,不能进行重用。此模式适合在 Document 样式的 WSDL 中使用,但并不适合 RPC 样式,因为未定义全局级别的类型。同样,“类型”也是 WS-I BP 对 RPC 绑定样式的一个限制。

  此外,此模式还不用于 WSDL 中可能需要扩展元素的情况,如为消息定义使用模式元素 ErpAddress 时。ErpAddress 是 XML 模式中的一个元素,但是并不位于全局级别。

  Salami Slice

  顾名思义,Salami Slice 模式将 XML 模式划分为具有更多全局级别元素的“片”。此模式非常适合 Document 样式的 WSDL,其灵活性高于 Russian Doll 样式。以下模式包含与 Russian Doll 模式相同的 Employee 信息,但采用不同的方式对其进行表示。

  清单 3. 采用 Slice pattern 模式的示例 XSD

  <xs:element name="Employee">
  <xs:complexType>
  <xs:sequence>
  <xs:element ref="ErpPerson"/>
  <xs:element ref="ErpAddress"/>
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  <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>

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

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

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

  • Spring 烂!差!

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

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

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

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

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