- From: Mark Nottingham <mnot@mnot.net>
- Date: Mon, 4 Feb 2002 06:38:41 -0800
- To: "Williams, Stuart" <skw@hplb.hpl.hp.com>
- Cc: "'Mark Baker'" <distobj@acm.org>, xml-dist-app@w3.org
Hi Stuart, Nice writeup! Very clear. On Mon, Feb 04, 2002 at 03:06:45PM -0000, Williams, Stuart wrote: > > It seems to me that there are three views that we are trying to (or > will need to) reconcile. > > a) RPC Usage of SOAP > b) Message/Document Exchange usage of SOAP > c) REST/Web-Architecture friendly usages of SOAP I'll buy that premise. > For a): RPC Usage of SOAP [..] > REST/Web-Architecture, possibly, rejects this as creating > additional 'verbs' rather than creating a richer collection of > 'nouns' (resources) - verbing nouns rather than nouning verbs > (nicely ironic 'nouning verbs' :-)). > > So RPC usage of SOAP seems to be at odds with a REST/Web-Architecture view > on (at least) three counts: > - The degree to which SOAP messages can be regarded as > representations of resource state. > - The creation of new verbs (whose semantics will generally be > unknown to HTTP intermediaries). > - The use of POST for method invocations: > i) It is a stretch to regard these as a request for the > creation of a subordinate (URI idenifiable) resource. > ii) It may be know a-priori that the method invocation is > withou side-effect in which case a GET is more > appropriate. > > Alternatively, the pragmatic view is to regard RPC/SOAP over HTTP > as 'tunneling'; to try not to reconcile this to > REST/Web-Architecture (because at best its probably a stretch). The > use of POST will at least enable those that wish to block RPC/SOAP > at least a coarse grain means to do so (an more fine grained > perhaps based on request URI matches). Agreed. > For b): Message/Document Exchange usage of SOAP. [..] > Message/Dcoument Exchange Usage of SOAP is not wholly in tune with > REST/Web-Architecture: > - It is possible to regard the entity body in the POST > response as representing the state of a subordinate resource > (an entry in a message queue). > - Modeling the POST response is a little trickier: > i) It could carry a state representation for queue entry. > ii) It could carry the outcome of processing the message > (not REST friendly). > iii) Polling queue entry status with GET also requires a > further means to de-queue or delete the entry > (lifecycle management) > > Again... the pragmatic again be to regard Document/Message Exchange > over SOAP/HTTP as 'tunneling'.. Hmm... "Message/Document Exchange" is a little broad; do you have a slightly more specific application in mind (or an example of one)? After all, all uses of SOAP are about 'Message Exchange'... The response to a POST doesn't necessarily carry a representation of the state of the resource; often, it's some sort of status message, or the result of processing, etc. a response to a GET for that same resource would, of course. So, ii and iii may be REST-friendly. I imagine that there will still be implementations along these lines that aren't RESTful, but then again there are plenty of Web sites that aren't RESTful either. That's OK; plenty of Web sites are un-RESTful as well. > For c): > > Here SOAP messages would be directly seen as representations of the > state of the resource referenced by the request URI (or its > subordinates). Here one essentially views SOAP as syntax for > representing resource state. This really feels like HTTP with SOAP > as the syntax for entity bodies. I like to think of it as SOAP just being a smarter, better media type (which I must confess is always how I've been inclined to view it; perhaps that's why I get confused sometimes!) > SOAP Intermediaries raises an interesting question since they > themselves are HTTP origin servers (that may be buffered behind a > series of HTTP intermediaries). Each SOAP intermediary along a SOAP > message path is an HTTP origin server. The HTTP resource referenced > by an initiating SOAP client and each intermediary along the path > is not necessarily the intended recipient of the SOAP message (it > could be another intermediary). I don't see any conflict between this and REST; they're acting as gateways. It's a separate issue that they may be interposed by other means (e.g., insertion of a SOAP intermediary into a HTTP proxy), but this is an issue that the Web as a whole is dealing with [1], and is not specific to SOAP. > I was thinking about Mark (B)'s suggestion [3] of using bodyless > SOAP messages with SOAP headers being treated as more precisely > targetted HTTP headers to control HTTP intermediaries (I making > inferences here that may be different from what was in Marks mind). > This feels awkward to... because unless those HTTP intermediaries > are also SOAP intermediaries, they will not be referenced by the > HTTP request URI and perhaps should not be 'tinkering' with the > SOAP message. I agree, of course. Thanks again. [1] ftp://ftp.isi.edu/in-notes/rfc3238.txt -- Mark Nottingham http://www.mnot.net/
Received on Monday, 4 February 2002 11:50:47 UTC