- From: Mark Baker <distobj@acm.org>
- Date: Sun, 6 Feb 2005 08:19:47 -0500
- To: Jonathan Marsh <jmarsh@microsoft.com>
- Cc: public-ws-addressing@w3.org
Jonathan - thanks for spending the time to try to make sense of this. On Fri, Feb 04, 2005 at 07:18:49PM -0800, Jonathan Marsh wrote: > mailto: doesn't work over HTTP. Sure it does! POST mailto:jmarsh@microsoft.com HTTP/1.0 Content-Type: text/plain Content-Length: 5 Ping! It doesn't work the other way around, because HTTP is currently the only application protocol which takes URIs rather than application-specific identifiers. That's why it's special. It's also part of the reason why the URI scheme has little to do with the protocol and therefore also why it's not a "transport address". > Also it seems in conflict with a > basic tenet of Web services, which is that different hops might use > different protocols, each hop with a transport address appropriate to > that hop. Not at all. It's definitely in conflict with the whole concept of "protocol independence", but not with what you wrote above. Perhaps the mailto/HTTP example above will help illustrate why that is so. > Steve Maines responds [7] to Mark: "ProcessMessage/POST is not an > operation, it's a punt. It's a verb that effectively means 'hey, I have > no idea what you meant by this, so you go deal with this blob of data in > whatever way you see fit'. In other words, it's a non-verb." Chris > Ferris immortalizes himself by making a similar point [8]: "'When I > accept POST', said Humpty Dumpty, 'it means just what I choose it to > mean, neither more nor less.'" The implication is that POST is more of > a hook for a higher-level application protocol than a component of an > application protocol itself. Looks to me like higher layers are > arguably blessed by HTTP itself. POST is (at least) two things. The first is the name of the semantic of "document-in, document-out" style interactions, where one agent submits a document to a service for processing, and perhaps gets a document in return, and where that expectation - "processing" - is the only one the client holds. If you want all services to be able to accept documents from any agent, then they all have to expose the same operation. Another thing that POST is, is the correct HTTP operation to use when you need to tunnel an application-specific mutating operation through HTTP, since it's the closest semantic match. So yes, it is the hook you refer to, but no, I wouldn't say that HTTP blessed the practice, even implicitly. FWIW, the RESTful use of HTTP is the former use. > In the end, I can't conceive of any non-draconian solutions, and Mark > doesn't propose any either (which is one of the reasons his posts are so > frustratingly abstract). I haven't proposed any because I want to be able to discuss the problem without any solution-specific issues getting in the way. But if you're interested, I think the simplest solution would be to drop the concept of an underlying-protocol-agnostic SOAP binding and create a SOAP/HTTP binding instead which would place the important protocol metadata like "address" in the Request-URI of HTTP, and also require other bindings that do things similarly for other application protocols, e.g. put the address in the "RCPT TO" SMTP operation. Is that too draconian? I wouldn't personally call it that, since most SOAP usage is over HTTP anyhow. But I agree it's "radical" insofar as it abandons protocol independence. Cheers, Mark. -- Mark Baker. Ottawa, Ontario, CANADA. http://www.markbaker.ca
Received on Sunday, 6 February 2005 13:01:53 UTC