Designing a new protocol for the Web
Download
Report
Transcript Designing a new protocol for the Web
waka: A replacement for HTTP
Roy T. Fielding, Ph.D.
Chief Scientist, Day Software
Director, The Apache Software Foundation
Co-founder, Apache HTTP Server Project
Elected member, W3C Technical Architecture Group
http://www.apache.org/~fielding/
1
How should we design a new
application protocol?
Define the architectural style
Even a generic protocol must choose one
model for evaluation of efficiency, or
choose to be inefficient for all applications
Document desired architectural properties
Identify the architectural elements
Components, connectors, data
Interfaces, transports, media types
Specify protocol
Semantics = component interaction
Syntax = efficiency/extensibility
waka: A replacement for HTTP
November 2002
2
But what about Web Services?
ONC / DCE RPC
COM / DCOM
CORBA
J2EE
Web Services
.NET
They have all tried to solve the same
problem …
waka: A replacement for HTTP
November 2002
3
EAI - the hard way
app5
app1
app2
app3
app4
n1
4 applications = 6 integrations
5 applications = 10 integrations
i
n
i1
6 applications = 15 integrations
waka: A replacement for HTTP
November 2002
4
EAI - the Web way
waka: A replacement for HTTP
November 2002
5
High-level Web Requirements
Low entry-barrier
Hypermedia User Interface
Simple protocols for authoring and data transfer
Extensibility
Multiple organizational boundaries
Anarchic scalability
Heterogeneous platforms
Gradual and fragmented change (deployment)
Distributed Hypermedia System
Efficient for large data transfers
Sensitive to user-perceived latency
Capable of disconnected operation
waka: A replacement for HTTP
November 2002
6
REST Architectural Style
My dissertation work at UC Irvine
available on Web [Fielding 2000]
independent discussion on RESTWiki [Baker et al.]
An architectural style can be used to define
the principles behind the Web architecture
such that they are visible to future architects
A style is a named set of constraints on
architectural elements
REST was used to guide definition and
implementation of modern Web architecture
modifications to HTTP and URI
implementations in Apache, libwww-perl, …
waka: A replacement for HTTP
November 2002
7
REST Style Derivation Graph
Uniform
Interface
Layered
System
Client
Server
Virtual
Machine
Replicated
Repository
LCS
Stateless
Code-On-Demand
Cache
REST
waka: A replacement for HTTP
November 2002
8
REST Process View
$
$
$
$
$
$
$
$
Layered Client-Server
Uniform Interface (like Pipe and Filter)
Stateless, Cacheable Communication
Optional Code-on-Demand
waka: A replacement for HTTP
November 2002
9
REST Uniform Interface
Pictures are not sufficient
We must define constraints that enforce a
uniform interface
Five primary interface constraints
Resource is unit of identification
Resource is manipulated through exchange
of representations
Resource-generic interaction semantics
Self-descriptive messaging
Hypermedia is engine of application state
waka: A replacement for HTTP
November 2002
10
Hypertext Transfer Protocol
The role of HTTP in Web Architecture
Extend uniform interface across the net
Minimize user-perceived latency
Enable layered processing
Enable caching
Enable extension and evolution
Already survived a decade of evolution
1991-93:
1993-97:
1996-now:
waka: A replacement for HTTP
HTTP/0.9 [Berners-Lee]
HTTP/1.0 [RFC 1945]
HTTP/1.1 [RFC 2068/2616]
November 2002
11
HTTP Message Syntax
GET /Test/hello.html HTTP/1.1\r\n
Host: kiwi.ics.uci.edu:8080\r\n
Accept: text/html, text/*, */*\r\n
User-Agent: GET/7 libwww-perl/5.40\r\n
\r\n
HTTP/1.1 200 OK\r\n
Date: Thu, 09 Mar 2000 15:40:09 GMT\r\n
Server: Apache/1.3.12\r\n
Content-Type: text/html\r\n
Content-Language: en\r\n
Transfer-Encoding: chunked\r\n
Etag: “a797cd-465af”\r\n
Cache-control: max-age=3600\r\n
Vary: Accept-Language\r\n
\r\n
4090\r\n
<HTML><HEAD>
…
waka: A replacement for HTTP
November 2002
12
HTTP Current Problems
HTTP/1.1 was limited by pre-existing syntax
Overhead of MIME-style message syntax
Head-of-line blocking on interactions
Metadata unable to come after data
Server can’t send unsolicited responses
Messages are not fully self-descriptive
Extensions don’t indicate scope, mandatory/optional
Response messages don’t indicate request
Low-power and bandwidth-sensitive devices
More severely impacted than desktop browsers
Typical solution: impose a gateway
device-specific, proprietary protocol
loss of fidelity in communication due to evolution
fails when devices roam across networks
waka: A replacement for HTTP
November 2002
13
It’s time for a new standard
A new protocol standard could solve HTTP’s
current problems in a generic way
However, building consensus around a new
protocol isn't easy
How do we differentiate from existing protocols,
particularly those that are supposedly generic?
How do we decide among conflicting design
alternatives for a new protocol?
How do we design such that the protocol can be
deployed in a heterogeneous environment?
I use the REST architectural style as a guide
waka: A replacement for HTTP
November 2002
14
Waka
A new protocol designed to match
efficiency of REST architectural style
Why “waka”?
Mäori word (pronounced “wah-kah”) for
the outrigger canoes used to travel safely
on the Pacific Ocean, across hundreds of
islands, to Aotearoa (New Zealand)
One of the few four-letter words suitable
for a protocol name
Deployable within an HTTP connection
via the HTTP/1.1 Upgrade header field
defined mapping to HTTP/1.1 for proxies
waka: A replacement for HTTP
November 2002
15
New Request Semantics
RENDER method
display/print/speak this representation
MONITOR method
notify me when resource state changes
Authoring methods (DAV simplified)
elimination of non-resource identifiers
reintroduction of PATCH
Request control data
request identifier
transaction identifier
relative priority
waka: A replacement for HTTP
November 2002
16
New Response Semantics
Self-descriptive binding to the request
Echo of request id, method, target URI
Cache key explicitly described
Caches no longer need to save request fields
Caches don’t have to guess about Vary info
Enables asynchronous transport
Response indicates authoritative or not
Semantics formerly in status code
Unsolicited Responses
Cache invalidation messages
Multicast event notices
waka: A replacement for HTTP
November 2002
17
Waka Syntax
Uniform syntax
Regardless of message type, direction
Padding allowed for 32/64bit alignment
Self-descriptive
Explicit typing for message structure, fields
Indication of mandate and scope of fields
Association of metadata (control, resource, rep.)
Premature termination of request or response
Efficient and Extensible
Tokens for all standard elements
A URI reference can be used in place of any token
Macros (client-defined syntax short-hand)
Interleaved data and metadata delivery
waka: A replacement for HTTP
November 2002
18
A work just beginning
waka
Has not yet been fully specified
Has not yet been implemented
Has not yet been deployed
Will eventually be proposed as ASF project
Will eventually be submitted to IETF
Will have its progress tracked:
http://www.apache.org/~fielding/waka/
waka: A replacement for HTTP
November 2002
19
20
Web Architecture
Understanding the Web’s Success
Design Notes of Tim Berners-Lee
Representational State Transfer (REST)
W3C Technical Architecture Group
Goals
Document existing design principles
Identify methods for evaluating
existing identifiers, formats, protocols
proposals for new features
proposals for new interaction styles
Define new design principles
waka: A replacement for HTTP
November 2002
21
Principled Architecture Design
Iterating over:
Analyze system
Focus on one phase of operation
Choose a level of abstraction
Identify components, connectors, data
Establish requirements
What must be true across phase of operation
Select design principles
Principles motivate architectural constraint
Constrain the architecture
Constraints induce architectural properties
waka: A replacement for HTTP
November 2002
22
Example Requirements
Web as a system must exist at the
operational scale of entire societies
no "on" or "off" switch
system must evolve while in use
Change is inevitable
requires planning for evolution
Spans multiple organizations
changes cannot be deployed all at once
requires gradual and fragmented change
waka: A replacement for HTTP
November 2002
23
Example Principles
Information hiding
a component's visibility into the implementation of
another component should be limited to what is
necessary to interoperate with its interface
prevents unintended assumptions about component
behavior that may not hold true in the future
applied to improve property of evolvability -independent evolution of technology over time
Separation of concerns
a component that performs two or more separate
activities is better implemented as two or more
components if doing so increases cohesion and
reduces coupling
applied to improve properties of simplicity and
evolvability
waka: A replacement for HTTP
November 2002
24
Example Constraint
Orthogonal protocols deserve
orthogonal specifications
If one protocol uses another as data, it must not
restrict the content of that data other than as
defined by that protocol, including future
compatible revisions of that protocol.
A specification that defines two orthogonal protocols
(including data formats) must be split into two
specifications, since otherwise the independent
evolution of those protocols will be hindered.
Result is simpler protocols
able to evolve independently over time
enables system to continue operation through
gradual and fragmented change
waka: A replacement for HTTP
November 2002
25