mark nottingham

Loose Coupling, Late Binding and REST

Friday, 3 October 2003

HTTP APIs

Mark Baker says that REST is SOA + late binding. While I see the truth in this, I think it’s pretty orthogonal, and it’s not that compelling for most SOAish folks.

This is because their use cases are machines talking to machines, not people talking to machines. In Web browsing, this is great, because people are smart enough to look at the late-bound semantics in a representation and figure out what they want to do; machines aren’t, yet.

That means that you need a description of the interface provided ahead of time for the programmer - rather than the user - to figure out what they want to do; this is the whole point behind WSDL, BPEL and the rest of the Web services description specs.

Of course, this doesn’t mean that you couldn’t come up with a description format for resources that would show developers the RESTful interface that they expose (and in fact I’m playing with one now, as I suspect many others are), but it wouldn’t be able to be used at runtime by machines. For late-bound REST to be useful to machines in addition to humans, we’ll have to wait for the Semantic Web to show more promising fruit.

UPDATE: Mark responds. I agree re: the elusive nitty-gritty of both late binding and loose coupling! *grin* DavidO (who really should have a blog!) has been noodling on this a lot more deeply than I ever could, and some of the results have been surfacing.

The quote you give makes things clearer; Roy’s basically saying that data (aka the representation) is bound to a reference when it’s de-referenced, not before, allowing you do cool stuff like conneg. Maybe I haven’t gone back far enough in the thread (if so, mea culpa), but I’m not clear on how this gets us to centralised vs. decentralised. I would agree that many WS folks and specs don’t leverage URIs nearly enough.