WSDL中定义的多端口服务

时间:2013-04-08 14:05:34

标签: web-services soap service wsdl port

一个与基本问题不同的问题。在我的WSDL文件的末尾。

<wsdl:service name="Lighting">
    <wsdl:port name="SwitchPower" binding="tns:SwitchPower">
        <soap:address location="http://localhost:8080/Lighting/SwitchPower/" />
    </wsdl:port>
    <wsdl:port name="Dimming" binding="tns:Dimming">
        <soap:address location="http://localhost:8080/Lighting/Dimming/" />
    </wsdl:port>
</wsdl:service>

具有两个端口的相同服务。是不是?

如果不是,规范的规则是什么?

2 个答案:

答案 0 :(得分:11)

是。想象一下,在现实生活中,这确实是可能的:

航运码头:多端口服务的理念

enter image description here

请参阅W3 WSDL Specification的第2.7节。您可以看到*表示您可以在服务下拥有多个端口。实际上,服务将一组相关端口组合在一起。但有几点需要注意。

W3 WSDL规范的第2.7节

服务将一组相关端口组合在一起:

<wsdl:definitions .... >
    <wsdl:service name="nmtoken"> *
        <wsdl:port .... />*
    </wsdl:service>
</wsdl:definitions>

name属性在封闭的WSDL文档中定义的所有服务中提供唯一的名称。

服务中的端口具有以下关系:

  • 没有一个端口相互通信(例如,一个端口的输出不是另一个端口的输入)。
  • 如果服务有多个端口共享端口类型,但使用不同的绑定或地址,则端口是备选方案。每个端口提供语义上等效的行为(在每个绑定强加的传输和消息格式限制内)。这允许WSDL文档的使用者根据某些标准(协议,距离等)选择要与之通信的特定端口。
  • 通过检查其端口,我们可以确定服务的端口类型。这允许WSDL文档的使用者基于其是否支持多种端口类型来确定它是否希望与特定服务进行通信。如果端口类型的操作之间存在某种隐含关系,并且必须存在整个端口类型集以完成特定任务,这将非常有用。

答案 1 :(得分:0)

  • 每个端口都引用唯一绑定(可以有多个绑定)
  • 每个绑定都可以引用单个portType
  • 多个绑定可以引用相同的portType或不同的portType(可以有多个portType)
  • 因此,当我们有多个portType时,我们通过引用绑定发布多个端口 enter image description here

img courtesy