- 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
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 UTC