WSDL 1.2 Binding Changes
|
|
|
Sanjiva Weerawarana |
|
WSDL WG F2F - July 2003 |
|
Raleigh, NC |
|
Motivation
|
|
|
Without <message> we can make WSDL
1.2 bindings dramatically simpler |
|
|
|
Overview
|
|
|
|
<binding>s in general |
|
SOAP binding |
|
HTTP binding |
|
@encodingStyle=rpc |
|
General documents |
|
|
|
<wsdl:binding>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
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
|
|
|
<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
|
|
|
<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> |
|