2

我目前正在学习 WSDL 2.0 规范并检查http://www.w3.org/TR/wsdl20-primer/#basics-service提供的示例

  <interface  name = "reservationInterface" >
    . . .
  </interface>

  <binding name="reservationSOAPBinding" 
          interface="tns:reservationInterface"
        . . . >
    . . .
  </binding>

  <service name="reservationService" 
       interface="tns:reservationInterface">

     <endpoint name="reservationEndpoint" 
               binding="tns:reservationSOAPBinding"
               address ="http://greath.example.com/2004/reservation"/>

  </service>

在这里你可以看到在service声明中我们必须指定interface属性,尽管它已经在binding声明中指定了。所以拥有绑定名称 - 我们可以解析它实现的接口名称。从我的角度来看(还不知道规范的人) - 这只是数据重复。

问题:interfaceinservice指定的用途是什么?有什么实际原因吗?

4

1 回答 1

1

我对 WSDL 2.0 规范不是很熟悉(WSDL 1.1 仍然是描述 Web 服务的事实上的方式),但我认为这实际上是倒退的。<service>需要该属性interface,而 上的一个<binding>是可选的。

http://www.w3.org/TR/wsdl20-primer/#basics-service(强调我的):

WSDL 2.0 服务指定该服务将支持的单个接口,以及可以访问该服务的端点位置列表。每个端点还必须引用先前定义的绑定,以指示在该端点将使用哪些协议和传输格式。一个服务只允许有一个接口

http://www.w3.org/TR/wsdl20-primer/#more-bindings-reusable(强调我的):

绑定可以是可重用的(适用于任何接口)或不可重用的(指定用于特定接口)。[...]要定义可重用绑定,绑定元素只需省略接口属性并省略指定任何特定于操作和特定于故障的绑定细节。端点以后可以以与不可重用绑定相同的方式引用可重用绑定。因此,当从端点引用可重用绑定时,它与特定接口相关联,因为端点是服务的一部分,并且服务指定了它实现的特定接口

据我了解,您需要在interface<service>指定正在实现的接口,而在interface<binding>限制它仅对该接口的使用。当两者都被指定但它们用于不同的事情时,这似乎有点多余。

于 2012-12-25T10:38:56.147 回答