Hoisting SOAP Binding Attributes

In the case where operations are all bound in the same way, the existing
SOAP binding is repetitious. A straightforward way to simplify this for
the common case is to allow the SOAP binding attribute information items
(AII) to be placed as defaults on the soap:binding element information
item (EII) define that AII placed on children of soap:binding would
override the default, and allow the soap:operation EII to be omitted if
they do not override any defaults.

This is not a proposal to eliminate the ability to define an
operation-by-operation binding; it is only a proposal to simplify the
default case where all operations within a portType are bound the same
way.

The table below summarizes where WSDL 1.1 defines the SOAP binding AII.

EII \ AII         @style @use  @encodingStyle @namespace
--------------------------------------------------------
soap:binding      OK
soap:operation    OK[*]
soap:body                OK    OK             OK
soap:header              OK    OK             OK
soap:fault               OK    OK             OK
soap:headerFault         OK    OK             OK

Where [*] overrides value from parent.


The proposal is to change the definition of the SOAP binding AII as
shown in the table below.

EII \ AII         @style @use  @encodingStyle @namespace
--------------------------------------------------------
soap:binding      OK     OK    OK             OK
soap:operation    OK[*]
soap:body                OK[*] OK[*]          OK[*]
soap:header              OK[*] OK[*]          OK[*]
soap:fault               OK[*] OK[*]          OK[*]
soap:headerFault         OK[*] OK[*]          OK[*]


EXAMPLE

In the default case, where all the operations are bound the same way,
this should simplify the binding significantly. For example, in WSDL
1.1, a SOAP rpc/encoded example in WSDL 1.1 would look like:

<binding name="StockQuoteSoapBinding"
    type="tns:StockQuotePortType">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
      style="rpc" />
    <operation name="GetTradePrice">
      <input>
        <soap:body use="encoded"
            namespace="http://example.com/stockquote"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded"
            namespace="http://example.com/stockquote"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>
    ...
</binding>

Where ... has to be repeated for each operation in the portType.

By contrast, the same example given the proposal would look like: 

<binding name="StockQuoteSoapBinding"
    type="tns:StockQuotePortType">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
      style="rpc"
      use="encoded"
      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      namespace="http://example.com/stockquote" />
</binding>

A SOAP document/literal example given the proposal would look like: 

<binding name="StockQuoteSoapBinding"
    type="tns:StockQuotePortType">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
    style="document"
    use="literal" />
</binding>

EOF

Received on Wednesday, 10 July 2002 20:52:11 UTC