REpresentational State Transfer (REST) guided the creation and expansion of the modern web. The reformations introduced with REST permitted the web to achieve its goal as an internet-scale distributed hypermedia system. Yet, the web has now seen the introduction of a vast sea of shared and interdependent services. Despite the expressive power of REST, these new services have not consistently realized the anticipated benefits from REST.
In order to better understand the unwritten axioms necessary to realize these anticipated benefits, we survey the history and evolution of the web’s infrastructure – including Apache HTTP Server, Firefox, and Squid. We also recount our experiences developing such systems and the challenges we faced due to the lack of thorough design guidance. We then critically examine these new services from the vast sea – including Service-oriented architectures, RESTful Web Services, and AJAX – to glean previously undocumented lessons about how these services are constructed and why they do not consistently realize the benefits expected from REST.
Based on this, this dissertation presents a new architectural style called Computational REST (CREST). This style recasts the web from a model where content is the fundamental measure of exchange to a model where computational exchange is the primary mechanism. This crucial observation keys a number of new axioms and constraints that provide new ways of thinking about the construction of web applications. We show that this new style pinpoints, in many cases, the root cause of the apparent dissonance between style and implementation in critical portions of the web’s infrastructure. CREST also explains emerging web architectures (such as mashups) and points to novel computational structure. Furthermore, CREST provides the necessary design guidance to create new web applications which have not been seen before. These applications are characterized by the presence of recombinant services which rely upon fine-grained computational exchange to permit rapid evolution.