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

Re: SOAP & REST

From: <noah_mendelsohn@us.ibm.com>
Date: Wed, 6 Feb 2002 21:28:40 -0500
To: distobj@acm.org
Cc: mnot@mnot.net ('Mark Nottingham'), skw@hplb.hpl.hp.com (Williams Stuart), xml-dist-app@w3.org
Message-ID: <OF2C07498C.7E518D56-ON85256B59.000D80AE@lotus.com>
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
Received on Wednesday, 6 February 2002 21:44:51 GMT

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