Resource-oriented architecture
![]() | It has been suggested that this article be merged into Representational State Transfer. (Discuss) Proposed since July 2007. |
Resource Oriented Architecture (or, ROA) is the architecture of the [1] web. Based on the seminal concept known as [2] REST, or Representational State Transfer (see Roy Thomas Fielding's Doctoral Thesis "Architectural Styles and the Design of Network-based Software Architectures" [3]), this architecture proposes that the central abstraction on the web is a resource.
The first published notion of Resource Oriented Architecture seem to have been the blog entry, posted on August 8, 2006 ([4] "Replacing Service Oriented Architecture with Resource Oriented Architecture" by Alex Bunardzic). Following a rather lively debate around this newly introduced concept, an important book ([5] "RESTful Web Services", by Leonard Richardson & Sam Ruby) was published in May 2007.
Why the Web?
While REST is a set of architectural guidelines applicable to various types of computing infrastructures, Resource Oriented Architecture (ROA) is only coupled with the web. This architecture is therefore useful mostly to businesses that consider the web as the computing/publishing platform of choice.
The power of the web seems to mostly reside in its ability to lower the barriers to entry for human users who may not be highly trained in using computing machinery. As such, the web widens the market reach for any business that decides to publish some of its content in electronic format.
On the web, such published content is regarded as a resource [6]. Resource Oriented Architecture then takes this situation and elaborates on its initial premises, by offering a fairly uniform and low-tech entry point for the businesses/individuals to join the conversation.
Join the Conversation
The web is abuzz with incessant streams of simultaneous conversations. Some of the conversation threads occurring on the web are of a quite serious nature, such as a communication taking place between the team of remotely located doctors, etc. Some of these conversations may be more trivial and frivolous, such as a community of baseball card collectors exchanging snippets if baseball trivia.
As in real life, one crucial aspect of any conversation lies in its openness for many interested third parties to join in. The easier it is to join in the conversation at any point, the more powerful the overall system can potentially get.
Resource Oriented Architecture specializes in offering the lowest possible barrier to entry when it comes to the third party joining any conversation of interest[7]. Thanks to it being deeply rooted in REST, ROA offers easy discoverability of resources engaged in some conversation. On top of that, ROA, through its REST foundation, offers a fairly uniform way to represent the resources partaking in the conversation. For any participating resource, ROA affords easy uniform way to elicit a transfer of the state of some other resource.
And finally, ROA also offers the ability for any third party that may have just joined the conversation, to easily review the 'minutes' of the conversation that had transpired thus far.
The World of Representations
Humans live in the world of representations. Representation, as a concept, is an attempt (arguably futile) to reach certain acceptable level of objectivity.
For example, if a person wants to buy a house, that person needs to qualify for a mortgage. If that person explains to the mortgage broker that he has $50,000.00 cash available for the down payment toward purchasing the house, the broker will not go ahead and approve the mortgage, even though the quoted amount would be fully satisfactory. What the mortgage broker needs is a more objective argument that would reassure the issuer that the party asking for the mortgage does indeed have enough money for the down payment.
But how is the issuer to go about obtaining the more objective proof? Certainly not by going directly into that person's safety vault and counting the money deposited there. Instead, the issuer is simply expecting to receive a representation of that person's balance in his bank account.
That representation projects a sufficient illusion of objectivity, so that the business transaction can eventually take place.
In the same manner, any transaction that transpires on the web is based on the similar representational logic. The actual resource is never being touched. Instead, various representations of the said resource are being prepared, rendered, and shipped to the clients for consumption. Same as in the real world the mortgage issuer will never actually touch client's money, but will instead be satisfied with a mere piece of paper representing the balance, resources on the web never get to be directly manipulated by the clients.