W3C home > Mailing lists > Public > www-ws-arch@w3.org > January 2003

Re: Binding

From: Christopher B Ferris <chrisfer@us.ibm.com>
Date: Wed, 8 Jan 2003 10:02:47 -0500
To: Mark Baker <distobj@acm.org>
Cc: www-ws-arch@w3.org
Message-ID: <OF82F8DC4D.9EAC8641-ON85256CA8.00453A07-85256CA8.00527FBC@rchland.ibm.com>
Mark Baker <distobj@acm.org> wrote on 01/08/2003 12:19:29 AM:
<snip/>
> 
> > Is it not reasonable to want to accomodate software agents that have
> > this understanding "hard coded" in the software that implements the 
agent?
> 
> It's entirely reasonable.  I'm surprised you thought I believed
> otherwise!  As I said elsewhere, I was trying to avoid mentioning
> Semantic Web technologies for the most part, because I have a good
> idea how I'll be received.
> 
> And besides, I think there's a lot of value in vanilla REST based
> Web services without the Semantic Web.

Okay, then where and by what means does the agent come by this encoded 
knowledge? (the when is fairly obvious... before:)

> 
> > > The difference between WSDL based knowledge, and REST based 
knowledge,
> > > is that REST's knowledge doesn't impact the binding qualities of the
> > > interaction.  So a client written to know how to place trades, can 
do
> > > so with any service that supports the same schemas.  A Web services
> > > approach requires that *both* interface and schemas match up.
> > 
> > Nonsense. You must be assuming RPC style here...
> 
> (I think you and I have been over this before.  I'll try again, but
> from a slightly different angle.)
> 
> Sort of.  You and I disagree on what "RPC style" is though.  I define
> "RPC style" as a style of Web service where the developer defines the
> methods/operations.

Well, maybe that is because when I look at it, the "method" or "operation" 

name is just some information carried in the message. The fact that some 
may
treat that information with the significance that it maps to a method call 
on
an object or static class is implementation detail that the client need 
not
be concerned with. We just went over the territory where you agreed that 
it was 
entirely acceptable for the agent to have a priori encoded understanding 
of the 
messages it will exchange with the service.

Whether the message looks like:

        <myquoter:StockQuoteRequest xmlns:myquoter="..." symbol="IBM"/>
or
        <myquoter:GetStockQuoteRequest xmlns:myquoter="..." symbol="IBM"/>
or
        <myquoter:sfhgwkjg4321hjfjd xmlns:myquoter="..." sdfasdf="IBM"/>

is largely irrelevant. It just happens to be the agreed upon syntax of the
message.

Don't start with the "HTTP GET uri is better..." argument... I have 
repeatedly
said on this list and elsewhere that I agree, there are benefits to be 
gained
from use of GET in many circumstances. We added GET to the SOAP1.2 
binding. 
We've heard it all before.

Many of us on this list and others have REPEATEDLY said that WE AGREE with 
your 
points. We GET it already! (pun intended:) Can we move on to new 
territory?

As for POST... HTTP POST means whatever the resource wants it to mean 
pretty
much. There is no constraint in REST or in RFC2616 that says what the 
entity
body means. I've posted quotes from RFC2616, I won't bother to do so 
again.

Again, if I have a POST that accepts entity bodies of type application/xml
whose root element name is one of the following:
        A) Feedback
        B) Review
and the body of the POST method happens to dispatch processing to 
different
handlers based upon which root element is carried in the entity body, are 
you 
suggesting that this is not a perfectly valid implementation strategy? 

Why is it all of a sudden a problem for Web services if the SOAP/HTTP 
binding
uses POST in a manner consistent with the above, just dispatching on a 
different
set of criteria (child element of the SOAP:Body element)? In fact, how the 
POST is 
implemented is irrelevant, really.

As for POST being used to get something, there are perfectly valid use 
cases
that I can think of off the top of my head where this strategy might be 
applicable
if not required.

Say I have a service that offers stock tips. It is a fee-based service. 
You POST
your credit card and expiration date and you get the stock tip in 
response. No creditcard, 
no stocktip. That simple.

You will argue that the POST should respond with a message that contains a 
content-location
header containing the URI of my stock tip. Well, fine. I could do that, 
but I may have
valid reasons why I might not, and I may not want that representation to 
be cached or the URI 
bookmarked. I have no way of authenticating you as having purchased the 
tip, so I don't
want to expose the material into public URI space lest it be compromised. 
That would cost
me lost revenue.

The material is copyrighted, so I am protected against my customers from 
copying
and distributing the material without my consent. For that matter, I may 
send it to
you via snail mail or email. I may give you an identifier that you can use 
to call me and
ask why I haven't delivered on my end of the commitment within a 
reasonable time. That identifier
may or maynot be a URI. That is quite irrelevant.

Again, you are retrieving a resource. However, there may be perfectly 
valid reasons
why HTTP GET is not appropriate and why a URI identifier might not be 
publicly exposed.
Maybe *behind* my firewall/service there is a completely RESTful Web based 
system at play 
in which the stock tip resource DOES have a URI, but that is MY business. 
The URI is 
for an address behind my firewall anyway and hence would mean nothing to 
you.

        http://192.168.1.20/current/mystocktip.html

How many nodes does the 192.168.1.2 IP address resolve to anyway? 
Mwaaahahahahahaaa!

> 
> This is in contrast to when developers use the methods provided by
> the underlying application protocols.
> 
> Do you see how that relates to this binding discussion?  That an
> application protocol defines the interface to which an application
> binds?

No. See above. Methinks that you are overly obsessed with GET.

> 
> > There is no reason 
> > whatsoever why
> > you cannot design a Web service such that it used a document-centric 
and 
> > RESTful style of interaction.
> 
> Absolutely, so long as there's no method in the SOAP envelope, or a new
> HTTP-like protocol is developed on top of SOAP (i.e. where the methods
> in the SOAP envelope mean the same as HTTP methods; GET, PUT, etc..,
> i.e. they are uniform).

I'm sorry, and why can't we be using SOAP with another protocol, other 
than
HTTP? May I not use BEEP, SMTP, FTP, or WebsphereMQ? Assuming that I may,
would it not be reasonable that I might want to expose the same set of 
SOAP messages through all of these protocols? Sure, YOU consider that 
tunneling
and we've been down that road before. There is NOTHING in REST or RFC2616
that constrains against tunnelled use of the HTTP protocol. People are and 
have 
been abusing it on a daily basis since it was deployed. Are some using the 
HTTP 
protocol in a more natural and RESTful manner than others? OF COURSE, and 
they reap 
the benefits thereof.

> 
> > Are you suggesting that somehow the RPC style of interaction is part 
of 
> > the
> > Web services architecture? Are you suggesting that REST precludes that
> > style? 
> > 
> > Think again. 
> 
> Well, with my definition of "RPC style", yes, I think it's most
> definitely part of the Web services architecture.  I think most Web
> services developers would be quite shocked at the prospect of not
> defining their own network APIs! 8-)

Oh puhleeze! Go rant on their mailing lists then. You are barking up the 
wrong tree here. I believe that you have agreed in previous posts that 
it is possible to build RESTful Web services. Why don't you write a book 
explaining how developers can best leverage the Web in Web services using 
the HTTP protocol binding, that way you may reach the correct target 
audience.

> 
> > > The structure of URI space is *completely* irrelevant, because the
> > > service creates the URIs, and clients use them opaquely without any 
a
> > > priori knowledge of what each one is; the a priori knowledge is in 
the
> > > code that interprets the schemas and understands what it means for 
some
> > > token, such as a URI, to be in a particular place.  The first point 
#3
> > > above demonstrates this.
> > 
> > And your point is what? I believe that you have successfully argued 
Miles'
> > case for him.
> 
> Miles and I are still struggling through that.  We appear to understand
> each other though, but I'm not sure you and Mike are following. 8-/

Oh, I'm so sorry. I guess I am just not smart enough to follow this 
thread.

"Duh, which way did he go? Which way did he go, huh? Duh, yup, yup, yup... 
duh"

> Assuming that your responses indicate interest, I will however continue
> the discussion.
> 
> MB
> -- 
> Mark Baker.   Ottawa, Ontario, CANADA.        http://www.markbaker.ca
> Web architecture consulting, technical reports, evaluation & analysis

Christopher Ferris
Architect, Emerging e-business Industry Architecture
email: chrisfer@us.ibm.com
phone: +1 508 234 3624
Received on Wednesday, 8 January 2003 10:03:36 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 3 July 2007 12:25:12 GMT