ErpPerson 和 ErpAddress 元素实际上可以进一步进行“切分”,以获得更多的元素粒度级别,但为了简单起见,我们仅到此为止。
现在 ErpPerson 和 ErpAddress 成为了模式中的全局级别元素,是能够在其他组件(如元素“Employee”)中引用的可重用组件。而且,使用 Salami Slice 模式的一个好处就是可以在 WSDL 定义中引用更多的元素。例如,现在可以在 WSDL 中将 ErpPerson 和 ErpAddress 分别用于为 ErpPerson 和 ErpAddress 有效负载定义 Document 样式的消息。
简要总结一下,Salami Slice 模式中的 Employee 模式可用于使用以下消息定义 WSDL:
Document 绑定样式的 Employee 消息
Document 绑定样式的 ErpPerson 消息
Document 绑定样式的 ErpAddress 消息
以下是上面所列出的内容对应的 WSDL 消息和绑定定义:
清单 4. Document 样式的 Employee 消息的 WSDL 定义
…
<wsdl:message name="publishEmployeeServiceRequest">
<wsdl:part name="employee" element="typeIn:Employee">
<wsdl:documentation>publish employee information</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>
清单 5. Document 样式的 ErpPerson 消息的 WSDL 定义
…
<wsdl:message name="publishErpPersonServiceRequest">
<wsdl:part name="erpPerson" element="typeIn:ErpPerson">
<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="erpPerson">
<soap:body use="literal"/>
</wsdl:input>
….
</wsdl:operation>
</wsdl:binding>
清单 6. Document 样式的 ErpAddress 消息的 WSDL 定义
… <wsdl:message name="publishErpAddressServiceRequest">
<wsdl:part name="erpAddress" element="typeIn:ErpAddress">
<wsdl:documentation>publish employee address data</wsdl:documentation>
</wsdl:part>
</wsdl:message>
…
<wsdl:binding … >
<soap:binding … />
<wsdl:operation name="publishErpAddressService">
<soap:operation style="document"/>
<wsdl:input name="erpAddress">
<soap:body use="literal"/>
</wsdl:input>
…
</wsdl:operation>
</wsdl:binding>
不过,Salami Slice 模式并不适用于 RPC 样式的 WSDL,因为其中未定义全局级别的类型(简单类型或复杂类型)。
Venetian Blind
在此模式中,模式中除根元素外的所有全局级别的组件都定义为类型。Venetian Blind 模式与 Russian Doll 类似,因为都使用的是单个全局元素。Venetian Blind 和 Salami Slice 模式的区别在于,所有全局组件(除根元素外)现在都定义为类型,而不是像 Salami Slice 模式中一样定义为模式元素。
Venetian Blind 通常可以用于 Document 和 RPC 绑定类型。以下模式表示了与之前的示例相同的 Employee 信息,但采用的是 Venetian Blind 模式。除了根元素“Employee”外,全局级别的复杂类型定义如下:
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。
-
Spring 烂!差!
有些人可能对Spring的第一印象不太好,它真的很烂,很差吗,也许这只是你的一种偏见,它也有是自己的优点的。
-
基于SOA架构的业务安全性研究
SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也给业务信息安全带来了负面影响,且存在安全隐患,这些你知道吗?
-
Java读取配置文件的几种方法
在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,那么在Java怎样读取配置文件呢?