Re: Issue 64 resolution: HTTP operations as WSDL operation names

I think WSDL would have been more generally applicable with a solution
that more resembles Mark Nottingham's strawman (referenced earlier),
but I agree that this proposal addresses issue 64.  FWIW, I believe
that it does this by being quite clear that a wsdl:operation always
defines the - as you put it earlier - "operation from the application
perspective", just like RPC does.

I'd also recommend that the WSDL 2.0 spec say this someplace.  It seems
to be implicitly understood to be the case, though as mentioned, some
folks seems to disagree.

Thanks.

Mark.

On Wed, Apr 21, 2004 at 01:19:11PM -0700, David Orchard wrote:
> 
> Proposal: WSDL 2.0 defines an interface consisting of HTTP operations, WSDL interface operations can use the HTTP operation QNames, a definition of an HTTP binding, and WSDL binding operations can use the HTTP binding.
> 
> The discrete items proposed:
> 1. A WSDL 2.0 interface consisting of the HTTP operations.
> 2. WSDL interface operations extends attribute may use the WSDL 2.0 HTTP interface qname.
> 3. HTTP Binding Operations contain an optional location attribute.  If set, this is the default URI for any operation bindings done in the binding operations.   This attribute is in soap 1.2 support proposed resolution.
> 4. HTTP Binding Operations contain an optional interface attribute.  This indicates that the referenced interface is used in it's entirety.  Each operation in the interface is bound to HTTP according to the operation qname in the referenced interface.  The binding is that the local name portion of the QName is mapped to the HTTP Method.  This is very similar to the interface attribute in SOAP 1.2 web method support.
> 5. HTTP Binding Operations contain an optional extends attribute references a binding.  Typically this will allow the binding to define the location of the service.
> 
> This is a logical extension of a description provided by Jonathan Marsh [1]
> 
> There are 2 WSDL definitions following.  The first is the WSDL definitions for HTTP operations.  The 2nd WSDL definitions are sample definitions using the proposed interface operation and binding operation constructs.
> 
> WSDL definition of HTTP operations
> ========
> 
> <wsdl:definitions 
>     targetNamespace="http://example.org/HTTP" 
>     xmlns:http="http://example.org/HTTP" 
>     xmlns:wsdl="http://www.w3.org/2004/03/wsdl" 
>     
>     <wsdl:interface name="HTTP">
>         <wsdl:operation name="GET">
>             <wsdl:input element="#any"/>
>             <wsdl:output element="#any"/>
>         </wsdl:operation>
>                 
>         <wsdl:operation name="POST">
>             <wsdl:input element="#any"/>
>             <wsdl:output element="#any"/>
>         </wsdl:operation>
> 
>         <wsdl:operation name="PUT">
>             <wsdl:input element="#any"/>
>             <wsdl:output element="#any"/>
>         </wsdl:operation>
>                 
>         <wsdl:operation name="DELETE">
>             <wsdl:input element="#any"/>
>             <wsdl:output element="#any"/>
>         </wsdl:operation>
>     </wsdl:interface>
> 
>     ...
> 
>     <wsdl:binding name="http:HTTP">
>       <http:binding>
>         <operation name="http:GET">
>           <http:operation method="GET" />
>         </operation>
>         <operation name="http:POST">
>           <http:operation method="POST" />
>         </operation>
>         <operation name="http:PUT">
>           <http:operation method="PUT" />
>         </operation>
>         <operation name="http:DELETE">
>           <http:operation method="DELETE" />
>         </operation>
>         ...
>       </http:binding>
>     </wsdl:binding>
> </wsdl:definitions>
> 
> Sample third party WSDL definitions using the wsdl http operations and binding directly.
> ================
> 
> <!-- An application using HTTP directly should have a very simple wsdl definitions -->
>    <wsdl:definitions 
>       xmlns:myns="http://example.org/mystuff"
>       xmlns:wsdl="http://www.w3.org/2004/03/wsdl" 
> 
>     <wsdl:import href="wsdl:http"/>
> 
>      <!-- interface is just HTTP -->
>      <wsdl:interface name="StockQuotes" extends="wsdl:http">
>      </wsdl:interface>
> 
>     <wsdl:binding name="myns:http" extends="http:HTTP">
> 	<!-- the binding provides a location for all the operations
>       <http:binding location="..." interface="myns:StockQuotes"/>
>     </wsdl:binding>
> 
>     <wsdl:binding name="myns:httpAlt">
> 	<!-- the binding provides a location for all the operations
>       <http:binding location="..." interface="myns:StockQuotes"/>
>  	<operation name="http:GET">
>           <http:operation method="GET" />
>         </operation>
>         <operation name="http:POST">
>           <http:operation method="POST" />
>         </operation>
>         <operation name="http:PUT">
>           <http:operation method="POST" />
>         </operation>
>     </wsdl:binding>
> 
>    </wsdl:definitions>
> 
> Cheers,
> Dave 
> [1] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0003.html
>  

-- 
Mark Baker.   Ottawa, Ontario, CANADA.        http://www.markbaker.ca

Received on Wednesday, 21 April 2004 19:42:22 UTC