12

一个不同的问题,与基本问题。在我的 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>

具有两个端口的相同服务。这样对吗?

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

4

2 回答 2

12

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

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

在此处输入图像描述

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

W3 WSDL 规范的第 2.7 节

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

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

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

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

  • 没有一个端口相互通信(例如,一个端口的输出不是另一个端口的输入)。
  • 如果一个服务有几个端口共享一个端口类型,但是使用不同的绑定或地址,那么这些端口是替代的。每个端口都提供语义等效的行为(在每个绑定强加的传输和消息格式限制内)。这允许 WSDL 文档的使用者根据某些标准(协议、距离等)选择要与之通信的特定端口。
  • 通过检查其端口,我们可以确定服务的端口类型。这允许 WSDL 文档的使用者根据它是否支持多种端口类型来确定它是否希望与特定服务进行通信。如果端口类型的操作之间存在某种隐含关系,并且必须存在整个端口类型集才能完成特定任务,这将很有用。
于 2013-04-08T14:46:42.060 回答
1
  • 每个端口引用唯一绑定(可以有多个绑定)
  • 每个绑定都可以引用单个 portType
  • 多个绑定可以引用相同的端口类型或不同的端口类型(可以有多个端口类型)
  • 因此,当我们有多个 portTypes 时,我们通过引用绑定来发布多个端口。
    在此处输入图像描述

图片礼貌

于 2017-11-08T01:25:55.913 回答