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

I knew that this made me uncomfortable, but couldn't think why.

Roberto has done a nice job of summing up problems, I think.  I would want
to see these issues addressed (can these methods be bound to other
protocols?  can one bind a get to a put?) before moving this proposal
forward.

Amy!
On Wed, 21 Apr 2004 17:13:14 -0700
Roberto Chinnici <Roberto.Chinnici@Sun.COM> wrote:

> 
> 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
> 


-- 
Amelia A. Lewis
Architect/Principal Engineer
TIBCO/Extensibility, Inc.
alewis@tibco.com

Received on Thursday, 22 April 2004 10:43:53 UTC