- From: David Orchard <dorchard@bea.com>
- Date: Wed, 21 Apr 2004 17:34:58 -0700
- To: "Roberto Chinnici" <Roberto.Chinnici@Sun.COM>
- Cc: <www-ws-desc@w3.org>
> -----Original Message-----
> From: Roberto Chinnici [mailto:Roberto.Chinnici@Sun.COM]
> Sent: Wednesday, April 21, 2004 5:13 PM
> To: David Orchard
> Cc: www-ws-desc@w3.org
> Subject: 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?
The operation is the GET operation in the same way that a spec like Atom describes it. Users use the operations in their application as the abstract methods. However they bind it is, well, how they bind it. They could bind a "PUT/DELETE" to POST ala Atom, but probably shouldn't bind GET to a PUT. If you want to call it REST:GET, that's fine by me. I had made an earlier suggestion to that effect because of exactly the same concern you raised. I'm glad we are in agreement about having some trouble with the name(s), but I think the bigger issue is whether WSDL 2.0 should provide a constrained interface.
>
> 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.
A slippery slope to where?
> 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.
>
The last time we made a single message with multiple related proposals, a bunch of people objected saying it was too confusing and wanted the proposals all separate. I'm not sure if there's a single container proposal we could make that would be of the right form for the group. I think more digestable chunks showing discrete benefit is a reasonable way to go.
> 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?
Do you have a counter-proposal for achieving the functionality of re-using a binding, ala an application binding re-using the http binding and just filling in the location?
>
> 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:35:18 UTC