Originally posted by Gurumurthy Ramamurthy:
REST (REpresentional State Transfer) is another way to implement SOA.
Thomas Erl describes in his book
Service-Oriented Architecture (SOA): Concepts, Technology, and Design (
amazon US) what he believes the important characteristics of contemporary SOA are (p.55):
Contemporary SOA is generally:
based on open standards architecturally composable capable of improving QoS
Contemporary SOA supports, fosters, or promotes:
vendor diversity intrinsic interoperability discoverability federation inherent reusability extensibility service-oriented business modeling layers of abstraction enterprise loose coupling organizational agility
In many cases standards do not yet exist for RESTful web services to offer some of these characteristics. Some may actually argue that SOA embraces complexity while RESTful design strives for simplicity. RESTful design allows for algorithmic resources - however it also seeks to replace the RPC-thinking prevalent in service-oriented architecture with resource-oriented thinking (a service can be a resource - but a resource doesn't have to be a service).
In many cases SOA is assumed to be implemented with SOAP-based web services. This doesn't mean that RESTful web services are inferior to SOAP-based web services, they just pursue different objectives.
That being said, RESTful web services can be used to achieve the some of the principles that made SOA initially so desirable (p. 37):
Loose Coupling Service Contract Autonomy Abstraction Reusability Composability Statelessness Discoverability