80 likes | 315 Views
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>.
E N D
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
<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 - Today
<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> Example - Tomorrow