Tuesday, June 12, 2007

* REST vs rest

You have come to the right place :

  • if you have never heard about the architecture style called 'REST'.
  • You have heard about it but don't know anything about it.

REST is an acronym standing for 'Representational State Transfer'.  Its an architecture style for network-based software systems first proposed by Roy Fielding in 2000.

This architecture style is mainly recommended for network based software systems which do not have complex requirements at both server and client end. An example of complex need will be, client should be able to send complex queries to host over web for retrieval of data. An example of simple requirement will be requesting a static html page from server.

The objective of this style is to design systems in as simple manner as possible to give them maximum scalability and ease of use.

The main features of 'REST' style of architecture are :

  • All resources should be available over http protocol.
  • Every resource should have a fixed named URI like http://productcompany/details/product1.
  • Stateless : All request from client to server should have enough formation so that server doesn't need to track requests from same client. This is to achieve maximum scalability.
  • Cache : Clients should be capable to cache responses where ever possible so that network trips can be avoided.
  • All interactions between client and server should happen using only following commands : GET, POST, PUT and DELETE.
  • All resources should have hyperlinks which can take client to details.

The best example of REST style architecture is classic Web with static HTMLs linked to each other.

REST is called 'Representational State Transfer' because as client moves from resource to other its state changes where the resource is accessed using named URI.

Although it was mainly recommended for accessing static data over web but with web becoming programmable through web services, it is now being compared with SOAP which is a style of transferring resources/data using web services.

Although web services can be designed in both REST and SOAP style, they are recommended in different kinds of problem space.

REST believes in fast and simple, so it should be used to build web services which are more oriented towards simple CRUD style of transactions but no or very less security requirements.

SOAP gives the power of tightly coupled systems to loosely coupled systems and is recommended for building complex, secure and robust network-based systems.

A very recent implementation of RESTful web services is 'Astoria' data services framework released by ADO.NET team at Microsoft.

Other Posts


    1. This sounds close enough to the truth to be mistaken for it, yet is sufficiently biassed to appear as M$ FUD.

    2. I'm the kind of character that comes straight out of MS's nightmares: I use Linux on my home workstation (don't have Windows at all) and I code in PHP or Ruby. Yet I still fail to detect the bias in this article.