I wanted to expand a little on my dismissal of Sanjiva’s argument that “The Web is necessarily human centric”.

Sanjiva, in his support for – and authorship of – WSDL, presumably wants to permit developers to publish their own service-specific interfaces, such as ones supporting methods like the canonical “getStockQuote”, or even “getRealtimeStockQuote”. And I’m certain he’d claim that these are very much machine-facing interfaces, since that’s supposed to be the whole point of Web services. So far so good?

So why is a system built around GET suddenly not machine facing? I’ve said before that the one thing that most distinguishes SOA and REST is the uniform interface of the latter; it says , in part, that the more general the operation, the more reusable the interface. In other words, using the example above, getStockQuote is more reusable than getRealtimeStockQuote. Moreover, GET is more reusable than getStockQuote.

By following that logic – that more general means more human-targetted – then one can only conclude that the methods most suited for machine-targetting will be the most specific ones. So never mind getRealtimeStockQuote, we’d need getRealtimeStockQuoteForGOOGonNASDAQ.

Of course, that’s silly. So is the argument that the Web is only for humans. I hope (hah! 8-) that this finally puts that argument to rest (pun intended).


no comment until now

  1. But if GET is more reusable than getStockQuote, isn’t DOIT (or maybe read/write – hey all we need is sockets!) more reusable than GET/POST/PUT/DELETE? :) Clearly a balance must be struck between generality and constraint in order to make any interface maximally effective for what it’s been designed to do. I get the impression that finding this balance is a bunch of what underlies a lot of the “REST vs. SOAP” discussion.

  2. Hey Glen. I’m not sure what “DOIT” means, but it can’t be more reusable than GET/PUT/POST/DELETE/etc.. because HTTP methods (and the REST uniform interface) are, by *definition*, supposed to be the *most* general.

    So it seems that either a) DOIT means the same as an existing method, b) DOIT isn’t an application level operation (i.e. it means something like “invoke”, where you still have to provide the application level operation), or c) DOIT means something else that’s uniform but isn’t an existing method.

    I suspect you mean b), but you might also mean a) if DOIT == POST; the action you get when you simply submit data to a data processor, like sending data down a pipe (e.g. ls | sort | head).

  3. […] each hold the positions we do about what seems like a completely trivial point. He responds to my previous piece on the Web being for humans. He writes; The problem with GET is exactly what Mark points to as its […]

Add your comment now