Abstract
The World Wide Web has succeeded in large part because its software
architecture has been designed to meet the needs of an Internet-scale
distributed hypermedia system. The Web has been iteratively developed
over the past ten years through a series of modifications to the
standards that define its architecture. In order to identify those
aspects of the Web that needed improvement and avoid undesirable
modifications, a model for the modern Web architecture was needed
to guide its design, definition, and deployment.
Software architecture research investigates methods for determining
how best to partition a system, how components identify and communicate
with each other, how information is communicated, how elements of
a system can evolve independently, and how all of the above can be
described using formal and informal notations. My work is motivated
by the desire to understand and evaluate the architectural design
of network-based application software through principled use of architectural
constraints, thereby obtaining the functional, performance, and social
properties desired of an architecture. An architectural style is
a named, coordinated set of architectural constraints.
This dissertation defines a framework for understanding software architecture
via architectural styles and demonstrates how styles can be used
to guide the architectural design of network-based application software.
A survey of architectural styles for network-based applications is
used to classify styles according to the architectural properties
they induce on an architecture for distributed hypermedia. I then
introduce the Representational State Transfer (REST) architectural
style and describe how REST has been used to guide the design and
development of the architecture for the modern Web.
REST emphasizes scalability of component interactions, generality
of interfaces, independent deployment of components, and intermediary
components to reduce interaction latency, enforce security, and encapsulate
legacy systems. I describe the software engineering principles guiding
REST and the interaction constraints chosen to retain those principles,
contrasting them to the constraints of other architectural styles.
Finally, I describe the lessons learned from applying REST to the
design of the Hypertext Transfer Protocol and Uniform Resource Identifier
standards, and from their subsequent deployment in Web client and
server software.
Links and resources
Tags
community