WSDL 1.2 Binding Changes

Slide image generated by PowerPoint
Sanjiva Weerawarana
WSDL WG F2F - July 2003
Raleigh, NC

Motivation

Slide image generated by PowerPoint
Without <message> we can make WSDL 1.2 bindings dramatically simpler

Overview

Slide image generated by PowerPoint
<binding>s in general
SOAP binding
HTTP binding
@encodingStyle=rpc
General documents

<wsdl:binding>

Slide image generated by PowerPoint
Make @interface optional to make binding more reusable
<binding name="ncname" [interface="qname"] >
    binding details
    <operation name="qname"> .. </operation>
</binding>
If any <operation> elements are present, then @interface MUST be present
service/@interface MUST match deref(endpoint/@binding)/@interface
Allow <endpoint> to point to bindings or inline bindings:
<service interface="qname">
   <endpoint name="ncname"
                  [bindings="list-of-qnames"]>
      inlined-bindings
      address-binding
   </endpoint>
</service>

SOAP Binding

Slide image generated by PowerPoint
Define default SOAP binding rules
@body goes into <soap:Body>
Each of @headers goes into <soap:Header>
Define new binding element for default rule for wsoap:operation/@soapActionURI
Proposal = interfaceTNS#operation-name
Drop <wsoap:body>, <wsoap:fault>
Change <wsoap:header>: add new header or add @role/@mustUnderstand
Drop @type, @namespace, @localname, @encodingStyle
Add @mustUnderstand??
Retain <wsoap:headerFault>: update
Drop <soap:binding>: drop @protocol
Change <soap:address>: add @protocol
Cool feature: No need to pay attention to /definitions/interface/operation/@encodingStyle=rpc

HTTP Binding

Slide image generated by PowerPoint
For @encodingStyle=rpc case
If types are all simple, then can do HTTP GET/POST binding for content-type=form-url-encoded
URL rewriting, POST body, …
Basically s!@part="foo"!xpath:/foo!g
For other cases
Natural text/xml binding with input/@body as input payload and output/@body as output payload

Example - Today

Slide image generated by PowerPoint
<definitions>
  <types>
    <xsd:schema>
      element-decls
    </xsd:schema>
  </types>
  <interface>
    <operation name=ncname>
      <input element=e1/>
      <output element=e2/>
    </operation>
  </interface>
  <binding name=ncname
               interface=qname>
    <soap:binding transport=http/>
  </binding>
  <service interface=ncname>
    <endpoint name=ncname
              binding=qname>
      <soap:address location="…"/>
    </endpoint>
  </service>
</definitions>

Example - Tomorrow

Slide image generated by PowerPoint
<definitions>
  <types>
    <xsd:schema>
      element-decls
    </xsd:schema>
  </types>
  <interface>
    <operation name=ncname>
      <input element=e1/>
      <output element=e2/>
    </operation>
  </interface>
  <binding name=foo>
    <soap:binding/>
  </binding>
  <service interface=ncname>
    <endpoint name=ncname
                    binding="x:foo">
      <soap:address protocol=".."
                           location="…"/>
    </endpoint>
  </service>
</definitions>