W3C home > Mailing lists > Public > www-ws-desc@w3.org > April 2004

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

From: Amelia A Lewis <alewis@tibco.com>
Date: Thu, 22 Apr 2004 11:34:44 -0400
To: paul.downey@bt.com
Cc: www-ws-desc@w3.org
Message-id: <20040422113444.7e1ed805.alewis@tibco.com>

Okay, I don't understand.

Is the implication that this particular pre-defined interface carries
particular semantics?  What is the point of saying "here's HTTP operations
defined in a WSDL interface" if there are no restrictions on how they are
bound?  If I can advertise an operation that claims to be HTTP:GET, yet in
fact what it does is more or less equivalent to HTTP:DELETE, *using HTTP*,
what's the point of having this?  If I advertise that an operation is
"HTTP:PUT", bound to a protocol with a maximum size of 512 bytes, and
restricting input to be one of four possible messages, what's the point?

So, what, exactly, is the goal of publishing a WSDL interface documenting
HTTP verbs?  I don't understand what's to be achieved.  I don't understand
what validation can be applied when someone uses it.  I don't understand
how it applies to any binding other than HTTP as practiced by the High
Priesthood of the First Orthodoxy of RESTifarianism, or how it can be
useful to them without some policing against heterodoxy.

Amy!
On Thu, 22 Apr 2004 16:20:53 +0100
paul.downey@bt.com wrote:

> AIUI these operations can be bound or not bound to 
> other protocols in the same way as it might not be 
> possible to implement some SOAP based MEPs across all bindings
> e.g. out-in over HTTP or RPC in a protocol with no return path.
> 
> Paul
> 
> 
> -----Original Message-----
> From: www-ws-desc-request@w3.org [mailto:www-ws-desc-request@w3.org]On
> Behalf Of Amelia A Lewis
> Sent: 22 April 2004 14:56
> To: Roberto Chinnici
> Cc: dorchard@bea.com; www-ws-desc@w3.org
> Subject: 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
> 


-- 
Amelia A. Lewis
Architect/Principal Engineer
TIBCO/Extensibility, Inc.
alewis@tibco.com
Received on Thursday, 22 April 2004 12:24:36 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:30 GMT