Resource oriented architecture

Resource oriented architecture

Resource Oriented Architecture (or, ROA) is a specific set of guidelines of an implementation of the REST architecture.

REST, or Representational State Transfer (see Roy Thomas Fielding's Doctoral Thesis "Architectural Styles andthe Design of Network-based Software Architectures" [] ), describes a series of architectural constraints that exemplify how the web's design emerged. Various concrete implementations of these ideas have been created throughout time, but it has been difficult to discuss the REST architecture without blurring the lines between actual software, or the architectural principals behind them.

In Chapter 5 of his thesis, Fielding documents how the world wide web is designed to be constrained by the REST series of limitations. These are still fairly abstract and have been interpreted in various ways in designing new frameworks, systems, and websites. In the past, heated exchanges have been made about whether RPC-style REST architectures are RESTful.

Guidelines for Clarification

The Resource Oriented Architecture documented by Sam Ruby gives concrete advice on specific technical details. Naming these collections of guidelines "Resource Oriented Architecture" may allow developers to discuss the benefits of an architecture in the context of ROA.

Example guidelines include:
* Query string parameters are appropriate if they are inputs to a Resource which is an algorithm
** Otherwise, these values should be moved into the URI
* Prefer pragmatic uses of putting data into URI, instead of using HTTP Headers
** A resource can use file extension in the URI, instead of Content-Type negotiation
* RPC-style APIs are avoided in favor of Resources and protocols
* A representation of a resource should have many links to the other Resources in the application, so that a client can discover state transitions
* URI templates provide the technology behind specifiying families of URI to clients.

Common Guidelines

Some guidelines are already common within the larger REST communities:

* Applications should expose many URIs (possibly an infinite number of them), once for each Resource (any resources in your applications should be unambiguously accessible via a unique URI)
* Cookies representing IDs into a server side session are not RESTFul
* Combinations of resources (i.e. a particular account viewing results a particular database query) can be RESTful if (and only if) the combination can be represented as a URI.
* RESTful URIs should facilitate "cut & paste" (that's the notion of "transfer" of the "representational state")

Existing Frameworks

RESTful Web Services discusses many software frameworks which provide some or many features of the ROA. These include

* Seam Framework
* Jersey JSR-311 or JAX-RS
* Ruby on Rails
* NetKernel
* Django and Turbogears
* Restlet

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 [] .

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 the applicant'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 involved parties could sufficiently relax and 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, where 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.

Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • Semantic service oriented architecture — A Semantic Service Oriented Architecture (SSOA) is a computer architecture that allows for scalable and controlled Enterprise Application Integration solutions. [ [ Exposing Semantic Web Service… …   Wikipedia

  • Resource Description Framework — (RDF, «среда описания ресурса»[1]) это разработанная консорциумом Всемирной паутины модель для представления данных, в особенности метаданных[2]. RDF представляет утверждения о ресурсах в виде, пригодном для машинной обработки. RDF является… …   Википедия

  • Architecture de la base UDDI — Universal Description Discovery and Integration Universal Description Discovery and Integration, connu aussi sous l acronyme UDDI, est un annuaire de services fondé sur XML et plus particulièrement destiné aux services Web. UDDI a été conçu pour… …   Wikipédia en Français

  • Architecture of Windows NT — The Windows NT operating system family s architecture consists of two layers (user mode and kernel mode), with many different modules within both of these layers. The architecture of Windows NT, a line of operating systems produced and sold by… …   Wikipedia

  • Architecture Design and Assessment System — The Architecture Design and Assessment System (ADAS) was a set of software programs offered by the Research Triangle Institute from the mid 1980s untilthe early 1990s. [G.A. Frank, D.L. Franke, and W.F. Ingogly, An Architecture Design and… …   Wikipedia

  • Network-Centric Service-Oriented Enterprise (NCSOE) — is a new generation enterprise capable of conducting collaboration and management of internal and external information. Using Network Centric Enterprise Services (NCES) , the enterprise can now enforce information and decision superiority in a… …   Wikipedia

  • Service Oriented Infrastructure — or SOI ( [pronounced sō i or es ō i ] ) is a system for describing IT infrastructure as a service. The underlying principles go back to, among others, Mainframe and LDAP technologies, but SOI provides a framework or mindset making business… …   Wikipedia

  • Software architecture — The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. The term also… …   Wikipedia

  • Dereferenceable Uniform Resource Identifier — A dereferenceable Uniform Resource Identifier or dereferenceable URI is a resource retrieval mechanism that uses any of the internet protocols (e.g. HTTP) to obtain a copy or representation of the resource it identifies. In the context of… …   Wikipedia

  • Common Object Request Broker Architecture — The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) that enables software components written in multiple computer languages and running on multiple computers to work together (i.e., it… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”