6. Free of user-perceived latency
5ms 150ms<95ms
5ms 150ms<95ms
Cached:
TTLs kinda suck; use client-side Conditional GETs
7. “The Web is intended to be an Internet-scale distributed hypermedia system”
○ Anarchic Scalability
○ Independent Deployment
Internet Scale
8. 4.1 WWW Application Domain Requirements
Requirements of a Web Application
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
9. A true web application: HTML
Life Section
OMG Katy Perry
11. Browsing Homepage
id=</>
url=</>
name=”USA Today”
section=</news/>
section=</sports/>
section=</life/>
section=</money/>
…
id=</life/>
label=”Life”
type=”Section”
type=”Link”
<section>
Browsing a Section
id=</life/>
url=</life/>
name=”Life”
story=</story/5868609/>
type=”Section”
id=</story/5868609/>
url=</story/life/people/2014/02/27/kat
y-perry-helps-deliver-baby-in-living-
room/5868609/>
title=”Katy Perry helps deliver baby in
living room”
type=”Story”
id=</story/life/people/2014/02/27/katy
-perry-helps-deliver-baby-in-living-
room/5868609/>
type=”Link”
View Source...
<story>
Reading Story
id=</story/5868609/>
url=</story/life/people/2014/02/27/kat
y-perry-helps-deliver-baby-in-living-
room/5868609/>
title=”Katy Perry helps deliver baby in
living room”
body=”...”
id=</story/life/people/2014/02/27/katy
-perry-helps-deliver-baby-in-living-
room/5868609/>
type=”Link”
12. 4.1 WWW Application Domain Requirements
If these are the requirements?
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
13. Browsing Homepage
id=</>
url=</>
name=”USA Today”
section=</news/>
section=</sports/>
section=</life/>
section=</money/>
…
id=</life/>
label=”Life”
type=”Section”
type=”Link”
<section>
Browsing a Section
id=</life/>
url=</life/>
name=”Life”
story=</story/5868609/>
type=”Section”
id=</story/5868609/>
url=</story/life/people/2014/02/27/kat
y-perry-helps-deliver-baby-in-living-
room/5868609/>
title=”Katy Perry helps deliver baby in
living room”
type=”Story”
id=</story/life/people/2014/02/27/katy
-perry-helps-deliver-baby-in-living-
room/5868609/>
type=”Link”
What is state?
<story>
Reading Story
id=</story/5868609/>
url=</story/life/people/2014/02/27/kat
y-perry-helps-deliver-baby-in-living-
room/5868609/>
title=”Katy Perry helps deliver baby in
living room”
body=”...”
id=</story/life/people/2014/02/27/katy
-perry-helps-deliver-baby-in-living-
room/5868609/>
type=”Link”
15. 4.1 WWW Application Domain Requirements
What can let us REST?
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
16. Can JSON let us REST?
4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
17. Can CSV let us REST?
4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
18. Can Plain ol’ XML let us REST?
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
19. Can HTML5 let us REST?
4.1 WWW Application Domain Requirements4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
20. Can RDFa+HTML5 let us REST?
4.1 WWW Application Domain Requirements4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
21. Can RDF let us REST?
4.1 WWW Application Domain Requirements4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?
24. Triples?
</story/43> gannett:author </author/54> .
subject predicate object
Eric has a bike.
subject predicate object
English:
RDF:
</author/54> gannett:firstName “Eric” .
subject predicate object
25. RDF is a graph
gannett:author
/story/43
/people/54
Eric
Moritz
gannett:firstName
gannett:lastName
26. RDF is a graph
/story/43
/people/54
Ericgannett:author
Moritz
gannett:firstName
gannett:lastName
/state/va
gannett:name
Virginia
gannett:state
27. Can we finally get some REST?
4.1 WWW Application Domain Requirements4.1 WWW Application Domain Requirements
Can we drive the state transitions of multiple
user-agents? Is it easy to author?
Can the service evolve?
Is the UI responsive?
Is it web scale?
Can we share data effortlessly and deploy the
client and server independently?