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。したがって、バインディング名があれば、実装するインターフェイス名を解決できます。私(まだ仕様を知らない人)からすれば、ただのデータ重複です。

質問: in は何のためinterfaceservice指定されているのですか? そのための実際的な理由はありますか?

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 サービスは、サービスがサポートする単一のインターフェースと、そのサービスにアクセスできるエンドポイントの場所のリストを指定します。各エンドポイントは、そのエンドポイントで使用されるプロトコルと伝送形式を示すために、以前に定義されたバインディングも参照する必要があります。サービスは、1 つのインターフェースのみを持つことができます

http://www.w3.org/TR/wsdl20-primer/#more-bindings-reusable (私の強調):

バインディングは、再利用可能 (任意のインターフェイスに適用可能) または再利用不可 (特定のインターフェイスに指定) のいずれかです。[...]再利用可能なバインディングを定義するために、バインディング要素は単にインターフェイス属性を省略し、操作固有および障害固有のバインディングの詳細を指定することを省略します。エンドポイントは、後で再利用不可能なバインディングと同じ方法で再利用可能なバインディングを参照できます。したがって、エンドポイントはサービスの一部であり、サービスは実装する特定のインターフェースを指定するため、エンドポイントから参照されると、再利用可能なバインディングは特定のインターフェースに関連付けられます

私が理解しているように、実装されているインターフェースを指定するinterface必要がありますが、その使用法はそのインターフェースのみに制限されています。両方が指定されているとちょっと冗長に思えますが、それらは別のものに使用されます。<service>interface<binding>

于 2012-12-25T10:38:56.147 に答える