Thy Kingdom Come Thy Will Be Done

The Musc of the year, thy kingdome come thy will be done, check it out and let me know what you'll think. 

test driven development

Test Driven Development has Revolutionized the Software Development Life Cycle Part II

The programming arena is plagued with many issues, which developers can solve, when they follow a software development methodology, which suites the project.

In today’s article we are going...

test driven development

Test Driven Development has Revolutionized the Software Development Life Cycle

In the programming arena, developers have to work in the dark, which is very similar to walking in a dark house from room, to room to understand what each room can do, and use that room for a...

lean software development

The Seven Principles of Lean Software Development

The computer world, is taking over the world, due to the software development processes, which have been changing on a daily basis.

In today’s article, we are going to talk about, the lean...

project management

Project Management is Essential for Projects to be Completed

A project must be managed well, in order for the project, to not go through certain problems and be able to face uncertainties.

Without project management, everything we see today, wouldn’t...

REST - Representational State Transfer

Rest

REST (Representational State Transfer):

Introduction

The World Wide Web is arguably the world's largest distributed application; therefore, an architectural framework is required to be standardized.

REST can be defined as a style of architecture for software, which is connected in a large-scale network and systems, which are a hypermedia distributed systems.

Hypertext Transfer Protocol (HTTP) and Uniform Resource Identifiers (URIs) are some of the Web standards, which have principles defined by REST.

A system could have the potential to take advantage of the architecture of the Web, if it follows these key principles: when things are linked together, when there is a stateless communication and when systems find resources from several representations and everything has an ID.

REST makes an emphasis on the fact that the exchange of information, can be made easy and that the growth of a system can be handled in a better way.

Specific information is also described by REST; distributed data objects, or resources have to follow certain guidelines, described by REST to be defined and addressed.

A Universal Resource Identifier (URI) are used to find resources on the Web, from a browser anywhere in the world, where there is a connection to the Internet, of course.

REST doesn't use any additional session tracking systems or layers of messages to transmit data that have a specific domain over HTTP (Hypertext Transfer Protocol).

As a form of architecture not a standard or specifications, REST has a deferent way of reading XML (Extensible Markup Language) files found on Web pages from Web sites.

Described by the use of HTTP to transport and address mechanisms such as URLs, the Web remains the largest REST application.

An on-line publisher could use REST to make content, available on the World Wide Web.

This would give advantage to the publisher's user, because they would only have to know the URL of a website to find the XML files and know where they were located.

REST is used with XML vocabularies, the most accepted form of transport and representation of information.

REST facilitates the use of media as well; which is why we have so many website online that serve people music, videos and a combination of other kinds of media.

REST uses the HTTP protocol as well as client-server, cacheable and stateless communication protocol.

Networked applications can be designed with REST too, these applications would use HTTP, to start a communication between machines.

The World Wide Web can be viewed as a REST-BASED architecture, because it is a RESTful application which uses HTTP request to CRUD (create, update, read, and delete) data.

If the Internet didn’t have REST, we wouldn’t be able to enjoy all the free information, we get to see, while we rest in front of computer monitors.

History of REST

REST has a long history on the INTERNET and is responsible for a large number of applications that support the INTERNET.

However, REST didn't get accepted by the majority of the INTERNET community until recently.

The idea of REST was mainly proposed by Roy Fielding in his dissertation, he also worked with Jeff Bone, Roger Costello, Mark Baker, and Paul Prescod, to bring REST to life.

The style of architecture that was brought by REST, was mainly based on the existing design of HTTP/1.1.

So as we can see, that the creators of REST didn’t start from scratch, instead, they model their application, after other existing applications.

Also the word REST was firs mentioned in Roy Fielding's dissertation “Architectural Styles and the Design of Network-based Software Architectures.

In his researched paper, he attempts to describe the architectural design principles of REST, which are undocumented and behind the Web.

REST doesn't impose limitations to its users, because REST constrains the macro-interactions of the origin servers, client-server, proxies and gateways.

REST is not considered a standard and is not a W3C recommendation.

However, REST is moving to a place where vendors are using it on a large-scale because developers, architect, managers and executive are fining RESTful Web services to be part of their applications portfolio.

"The World Wide Web architecture has evolved into a novel architectural style that I call 'representational state transfer. Using elements of the client/server, pipe-and-filter, and distributed objects paradigms, this style optimizes the network transfer of representations of a resource. A Web-based application can be viewed as a dynamic graph of state representations (pages) and the potential transitions (links) between states. The result is an architecture that separates server implementation, from the client's perception of resources, scales well with large numbers of clients, enables transfer of data in streams of unlimited size and type, supports intermediaries (proxies and gateways) as data transformation and caching components, and concentrates the application state within the user agent components." - Roy Fielding

REST architecture

.

We should note that REST is a design approach to systems, which are developed for web services.

When someone wants to use REST, he/she must also use it with HTTP and XML, bottom line.

A developer may also use JSON coupled with REST, to design a cloud system, or a system that would server valuable information to people.

COBRA, SOAP and RPC (Remote Procedure Calls) are other mechanisms, which can be used to design the architecture of network applications.

However, these mechanism are very complex, and are not easy to use; therefore, many developers are turning to REST to design network applications.

REST can also be challenging though, because developers are required to rethink problems, based on the URI.

However, many online systems still rely on REST, for example, the Atom publishing protocol, which is, widely used to publish blogs, is a RESTful application.

The process of publishing blogs is tremendously simplified, when REST is used, instead of all the other mechanisms, mentioned above.

Client-side software is not required as often, when RESTful is used, because any application and data resource, can be easily accessible, with a single standard browser.

REST essentially involves the data elements, which includes data objects, resource identifiers and representation of resources.

A standardized interface such as HTTP is used coupled with REST, to access data elements.

The components that are involved in REST are: origin servers, gateways, proxies, and user agents, which communicate, by transferring representations of resource through an interface.

These components do not operate directly on the resources themselves, instead they use an interface, such as GET and PUT.

Connectors such as clients, servers, and caches, as well as Socks and SSL connection, are also used, to present an abstract for communication and hiding at the same time, the implementation details of the communication mechanism.

REST makes communication process possible online, through stateless interaction, which means that, all the request made to connectors, must contain all the information necessary to understand a request.

Many websites today use cookies or SESSIONS to maintain data between pages, whereas is a REST architecture network, all information is necessary, to have full understanding of the context of an interaction.

When a system is compliant with REST architectural style, any kind of distributed media is enabled.

REST also ensure that performance, scalability, simplicity, modifiability, visibility, portability and reliability are the desirable emergent properties.

REST follows a number of principles which have a lot of responsibility with the growth of the INTERNET.

Some of those principles that REST follows are:

  • A resource-identification system where a unique resource ID is given to a resource found on-line.
  • Application-state-transitions and application information use HTML and XML as their number on type of file to carry hypermedia content.
  • GET, POST, PUT and DELETE (CRUD) are the main and well-defined operations that are used in all part of the information being transmitted.
  • The HTTP message encloses all the information that is needed to understand the request, this makes a stateless client-server protocol.

REST is another style of architecture which is a deferent programming approach, and REST is a lightweight alternative to Web Services and RPC.

REST is lightweight because it doesn't contain encryption, session management, security features, etc.

Instead REST is defined as a service by the following

  • Firewalls are not an obstacle when using REST.
  • The Operating System has no effect when using REST. This makes REST platform-independent.
  • The programming language is also independent.
  • It uses HTTP to transmit data.

REST in today’s cyber world

In an ideal world, the implementation of a software system would exactly match its design.

REST has indeed impacted the website industry tremendously and today it remains one of the best applications, used for structural style.

The overall purpose of REST is, to create an architectural model, for how the World Wide Web should and still works today.

REST is useful today, because it helps identify problems with the Internet and, ensure that newly developed protocol extensions are within the rules, which make the Internet resourceful.

Finally REST was also developed to ensure that there are many solutions to one problem, if a major problem is identified with the Internet.

The architectural standards for the World Wide Web, were designed, using REST, as part of the Internet Engineering Taskforce (IETF) and the World Wide Web Consortium (W3C).

REST has become popular among consumers, who wish to develop a cloud-based API, due to the fact that REST provides system, the ability to build applications and networks, in a decouple architecture; and also the fact that REST is a lighter weight type of communications, which occurs between a sender and a receivers.

Some of the architectural constrains of REST as the fact that this architecture is able to leverage cache, it also able to leverage a uniform interface, REST also leverages a layered system, REST is stateless and finally but not least REST is able to decouple consumers from producers, which means that the sender and receiver are independent of each other.

Social media websites, mobile applications, automated business process and mashup tools, implement the power of REST, in order for them to accomplish, each of their tasks.

A limited number of operations, is also part of REST’s style, in order to enhance the interactions, between clients and services.

REST is very powerful and it is also easier to learn than other applications, which attempt to provide the same services as REST provides.

REST will continue to grow, and it will become the preferred method, to implement the architecture of a system online, especially cloud based systems.

Also the fact that enterprises are looking to provide open and well-defined interfaces for applications and infrastructure services, makes REST a preferred method.

As cloud computing grows, so will the demand for REST’s architectural methods.

REST is undoubtedly providing all the architectural principles, which underlies the World Wide Web.

The reason for having an architectural principles, for the World Wide Web, is to attempt to minimize latency during network communication, through the coordinated set of architectural constraints presented by REST.

Therefore, REST places many constraints on connector semantics, and not on component semantics, as other architecture styles have done.

REST meets the needs of an Internet-scale distributed hypermedia system, by enabling the caching, reusing of interactions, dynamic substitutability of components and processing of actions by intermediaries.

The following contributions to the field of Information and Computer Science have been made as part of REST:

  • A framework for understanding software architecture through architectural styles, in-cluding a consistent set of terminology for describing software architecture;
  • A classification of architectural styles for network-based application software by the ar-chitectural properties, they would induce when applied to the architecture for a distrib-uted hypermedia system;
  • A novel architectural style for distributed hypermedia systems; and, application and evaluation of the REST architectural style in the design and deployment of the architec-ture for the modern World Wide Web.

The use of URI as resource identifiers and the use of Internet media types to identify representation data formats are some features of the modern Web architecture that do correspond exactly to their design criteria in REST.

The technical success of the World Wide Web, can be understood, when a good under-standing of key architectural principles underlying the Web is obtained
The understanding of the key architectural principle of the World Wide Web can also lead to improvements in other distributed applications, particularly those that are ame-nable to the same or similar methods of interaction.

The needs of wireless devices, which have many characteristics in common with the principles behind REST, will motivate further enhancements for application-level proto-col design and architectures involving active intermediaries.

Future work will focus on extending the architectural guidance toward the development of a re-placement for the HTTP/1.x protocol family, using a more efficient tokenized syntax, but without losing the desirable properties identified by REST.