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

I'm not sure what concrete problem is addressed by this proposal (and
yes, I've read issue 64).

In what sense is the operation called QName("http://example.org/HTTP", 
GET) *the* HTTP GET "operation" (= method, I presume)? Certainly I'm
free to bind it in a completely HTTP-free way, say to SOAP/SMTP. What
does it mean in that case? And what if I bound it to an http:operation
with method="PUT"? Or is the REST:GET operation what people are really
asking for?

And wouldn't the hypothetical user of the wsdl:HTTP interface want to
restrict the input and output messages? E.g.

      <wsdl:interface name="StockQuotes" extends="wsdl:http">
         <wsdl:operation name="GET">
             <wsdl:input element="myns:something"/>
             <wsdl:output element="myns:somethingElse"/>
         </wsdl:operation>
      </wsdl:interface>

I see a big, slippery slope on the horizon. In this case, I'd rather see
a proposal that deals with the more complete functionality than vote it
in piecemeal over the next several weeks.

Additionally, I'm not too confortable introducing the concept of a
binding extending another binding. It seems to raise more issues
than it solves. Moreover, if it's really needed, it should find its
way in Part 1, shouldn't it?

Roberto


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

Received on Wednesday, 21 April 2004 20:12:47 UTC