Service Oriented, Process
Centric, Model Driven Heresies

I have been talking quite a bit with the REST community lately and our
argument came down to challenge one of the core fundamental assumption of REST:
resource expose a uniform interface (materialized by the HTTP verbs: GET, PUT,
POST, DELETE). I argue that this uniform interface is only possible because a
human is making sense of a resource
business interface.

There are multiple uniform interfaces possible:

GET, PUT, POST, DELETE (REST)

Send, Receive (MEST, WSDL)

Write, Read (Sockets)

Create, Read, Update, Delete (RDBMSs)

Publish, Subscribe (MOM)

They can all implement a business interface on top of any of these so-called
"uniform" interfaces, no question about it. The WADL spec clearly shows how to
model a business interface over HTTP leveraging REST where you can.

At the end of the day, if you want to model the full interface of say a
Purchase order you are going to have something like this:

- GET

- PUT (change PO content, you can PUT the content of the PO as often as you
want until it is submitted)

- submit (This is a state change not a content change, once you submitted the
PO once, you can't submit it "twice", there is no transition from the
"submitted" state to itself.

- accept (same thing for accept, what would it mean that you can PUT the
content of the PO from here?)

- ...

So some RESTifarians like Bill de Hora complain that WSDL force you to think
the order in which you invoke your operations. Don't get me wrong I have a lot of
respect for Bill, I just can't comprehend that there could such a disconnect
between he and I. Am I missing something?
At least John and I agree.

What you can easily see in WADL
is the amount of code you have to write to
manage the URI - method mappings, the handlers and the data binding....

I have attended a SUN event tonight were they presented side by side their
Web Service and REST framework, all I could say (and nobody seem to disagree in
the attendance) they look a lot alike. So what's the point? REST will inevitably
adopt an interface description language, with some luck the grandpas of
distributing computing will force an RPC model, will lock down features such as
XML extensibility and will forever forbid composition mechanisms such as
orchestration, assemblies and choreographies. (Nobody in REST wants to hear
about choreography). At the end of the day, the choice is yours, you can use
WS-* today at the process and information federation layer (and REST at the
presentation layer) or you can wait 5 to 10 years for the REST community to
create REST-*.