W3C home > Mailing lists > Public > xml-dist-app@w3.org > February 2002

Re: SOAP & REST

From: Mark Nottingham <mnot@mnot.net>
Date: Wed, 6 Feb 2002 19:15:56 -0800
To: noah_mendelsohn@us.ibm.com
Cc: distobj@acm.org, Williams Stuart <skw@hplb.hpl.hp.com>, xml-dist-app@w3.org
Message-ID: <20020206191548.A31683@mnot.net>

Not deeply different, no. One _interesting_ difference is that the
first can have subresources of the operation, e.g.,

  http://numbers.com/divide/remainder?...

whereas the other approach would need a new argument
 
  http://numbers.com/?operation="divide"&suboperation="remainder"

(arithmetic is perhaps a poor example here)

As a subresource, we know that there's a certain relationship between
the two resources; this is evident in such mechanisms as relative URIs.
If the operation is done with arguments, we lose this relationship.

Not earth-shattering, but it does give a means of composing
applications through the interrelation of resources that has some
nice properties. 



On Wed, Feb 06, 2002 at 09:28:40PM -0500, noah_mendelsohn@us.ibm.com wrote:
> Regarding opacity, I am aware of the axiom, but you have to be careful how 
> to interpret it. 
> 
> http://www.w3.org/TR/
> 
> isn't  particularly more opaque than 
> 
> http://numbers.com/multiply.
> 
> What is true of the opacity rule is that middleware and the network, and 
> within reason the client and server, should not be computing on or 
> inspecting the substructure of the URI.  Even the W3C web site in an 
> important sense dispatches on TR vs. Member, to identify the resource, 
> though at the next level up the entire URI is opaque.  The URI 
> architecture explicitly embraces hierarchical URIs, which are in that 
> sense not opaque when you're putting them together or serving them up. 
> 
> The only difference I see per web architecture between
> 
> http://numbers.com/multiply?inputnumber1="3"+inputnumber2="4"
> 
> and 
> 
> http://numbers.com/?operation="multiply"+inputnumber1="3"+inputnumber2="4"
> 
> is that we can guess that to implement both multiplication and division, 
> the first style would result in two separate parameterized web resources 
> (a multiplying resource, and a dividing resource) while the second would 
> use a single parameterized resource (an arithmetic resource).  I don't see 
> the two as deeply different from a web architecture point of view.
> 
> ------------------------------------------------------------------
> Noah Mendelsohn                              Voice: 1-617-693-4036
> IBM Corporation                                Fax: 1-617-693-8676
> One Rogers Street
> Cambridge, MA 02142
> ------------------------------------------------------------------
> 
> 
> 
> 
> 
> 
> 
> Mark Baker <distobj@acm.org>
> 02/05/2002 09:35 PM
> 
>  
>         To:     Noah Mendelsohn/Cambridge/IBM@Lotus
>         cc:     mnot@mnot.net ('Mark Nottingham'), skw@hplb.hpl.hp.com (Williams Stuart), 
> xml-dist-app@w3.org
>         Subject:        SOAP & REST
> 
> 
> > What I _think_ one would typically do with HTTP independent of SOAP 
> would
> > be something like sending a GET to:
> >
> >         http://numbers.com/multiply?inputnumber1="3"+inputnumber2="4"
> 
> That would be a good example of a URI that I would use, but what's
> important here is what information you can extract from the URI itself.
> More below.
> 
> > implying that all the products represent one parameterized resource. 
> Now,
> > consider the following SOAP:
> >
> >         <s:envelope xmlns:s="...soap env uri...">
> >                 <s:body>
> >                         <multiply xmlns="...math namespace...">
> >                                 <inputnumber1>3</inputnumber1>
> >                                 <inputnumber2>4</inputnumbe2>
> >                         </multiply>
> >                 </s:body>
> >         </s:envelope>
> >
> > An obvious binding would be:
> >
> >
> > http://numbers.com/?operation="multiply"+inputnumber1="3"+inputnumber2="4"
> 
> Right.  The difference between this URI (and its SOAP equivalent), and
> the other URI is that this one requires the client know what "multiply"
> means.
> 
> The relevant architectural principle here is;
> 
> http://www.w3.org/DesignIssues/Axioms.html#opaque
> 
> In the first URI above, "http://numbers.com/multiply" is entirely opaque.
> No information can be extracted from that URI string such that a user or
> machine can know that multiplication is occuring.
> 
> In the second URI, the operation is part of a query parameter which is
> a less opaque part of the URI from the point of view of the client
> (though opacity of query parameters can be rigged with hidden form
> fields).
> 
> > Anyway, to net it out, my concerns in this note are:
> >
> > 1) to point out that in many cases, it is the _service_ that is the web
> > resource when we're building web services.
> > 2) to ask those who understand REST better than I do how they would 
> model
> > such a situation, with or without SOAP
> 
> I'd go with the former URI.
> 
> If you're now wondering how it is that some piece of software knows
> the difference between a multiplication or a division service, that's
> where hypertext comes in; an assertion needs to be made that the
> resource is a "multiplier" (and there'll be some URI for that).
> 
> MB
> --
> Mark Baker, Chief Science Officer, Planetfred, Inc.
> Ottawa, Ontario, CANADA.      mbaker@planetfred.com
> http://www.markbaker.ca   http://www.planetfred.com
> 
> 

-- 
Mark Nottingham
http://www.mnot.net/
 
Received on Wednesday, 6 February 2002 22:15:58 GMT

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