Web services WSDL中定义的多端口服务

Web services WSDL中定义的多端口服务,web-services,soap,service,wsdl,port,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> <ws

一个不同的问题,与本质问题。在我的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.7节。您可以看到,*表示一个服务下可以有多个端口。事实上,服务将一组相关端口组合在一起。不过,有几点需要注意

W3 WSDL规范的第2.7节 服务将一组相关端口分组在一起:

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

*
*
name属性在所包含的WSDL文档中定义的所有服务中提供唯一的名称

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

  • 没有一个端口相互通信(例如,一个端口的输出不是另一个端口的输入)
  • 如果一个服务有多个端口共享一个端口类型,但使用不同的绑定或地址,则这些端口是可选的。每个端口提供语义等价的行为(在每个绑定施加的传输和消息格式限制范围内)。这允许WSDL文档的使用者根据某些标准(协议、距离等)选择与之通信的特定端口
  • 通过检查其端口,我们可以确定服务的端口类型。这允许WSDL文档的使用者根据是否支持多种端口类型来确定是否希望与特定服务通信。如果端口类型的操作之间存在某种隐含关系,并且必须存在整个端口类型集才能完成特定任务,则这一点非常有用
      • 每个端口引用唯一绑定(可以有多个绑定)
      • 每个绑定都可以引用单个端口类型
      • 多个绑定可以引用相同的端口类型或不同的端口类型(可以有多个端口类型)
      • 因此,当我们有多个端口类型时,我们通过引用绑定来发布多个端口。

      谢谢你的帮助。所以不,现在我有两个和两个(调光和开关电源)。我从未见过这样的例子。这是我的问题。但是,当此服务中只有一个端口(暗显或SwitchPower)时,我的客户机希望读取我的WSDL,但当这两个端口都存在时,则不希望读取。