• No results found

Web application Architecture

N/A
N/A
Protected

Academic year: 2021

Share "Web application Architecture"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

AJAX

Prof. Cesare Pautasso

[email protected]

http://www.pautasso.info

@pautasso

1 / 29

Web application Architecture

Client

Server

Web Browser

Web Server

Request Response

Application

File System

Database

Application

Backend

5 / 29

©2014 Cesare Pautasso

Very Thin Client

Display Request Response Application Data Input/ Output 6 / 29

Client/Server

Display Request Response Application Data 7 / 29

Rich Client

Display Request Response Data Application 8 / 29

General Architecture

Display Request Response Server Application Data Client Application Cache 9 / 29 ©2014 Cesare Pautasso

(2)

Rich vs. Thin Client

Rich Client

Applications runs on the client (may use the server for storage) Platform Examples:

Software needs to be deployed on the client Zero latency

Complete control, native access to the client platform Thin Client

Application runs on the server, client only perform UI tasks Examples:

Zero deployment/upgrade costs

Cannot (yet) work offline: sensitive to network failures Limited control, sandboxed access to the client platform

Windows, MacOS/X Eclipse RCP/Java

Dumb Terminals Web 1.0 Applications

11 / 29

Client/Server App Structure

app.js

package.json

models

public/css

public/images

public/js

public/views/*.js

routes

views/*.dust

public

contains static assets downloaded and executed by

the browser

What about security?

Web servers should not ever run

any code sent by a Web browser

Web browsers use a sandbox (secure virtual machine)

to run code downloaded from a Web server

Web Browser

Web Server

Request Response

(3)

Interconnect

How to connect the client with the server?

How to connect the server with the client?

Send user commands and input data as HTTP

requests from the client to the server

Pull: Fetch and refresh output data

Push: Notify client about state changes

Web Browser

Web Server

PULL

PUSH

15 / 29

Web 1.0 Architecture

Web Browser

Web Server

Application

Page 1

<a href=

Click on link

Page 2

<form action=

HTML

Submit form

Page 3

<a href=

HTM

L

A new page must be loaded

for every interaction

Web 1.0 Architecture - Problems

UI not Responsive

Server unnecessarily busy rendering Web pages in HTML

when it could be just sending JSON and offload the rendering

to the browser

The entire UI must be refreshed for every interaction, even if

only parts of it need to be updated

The browser is blocked until the new page is downloaded from

the server

(4)

Web 2.0 Architecture

Web Browser

Web Server

Application

Page 1

<onclick>

<onsubmit>

<onkeypress>

<onmouse*>

Click

JSON

KeyPress

JSO

N

User interactions are decoupled

from client/server interactions

Advantages

When the user interacts with the application we send a JSON/XML request to the server and receive a JSON/XML response back. The HTML rendering is done on the client

JSON is faster, smaller, cheaper to encode, send and decode compared with XML/HTML

Clients do not have to download the entire data but can fetch the data they need when they need it

19 / 29

Problems

Since the whole application runs in the same

page:

HTTP connections are expensive:

Back button, navigation history broken

Needs special handling of the "UI state" of the application

Do not poll the server too often

Browsers limit the number of parallel connections to the same

server

History Navigation

history.pushState(state, "title", URI); history.replaceState(state, "title", URI);

Write a (new) entry in the browser history

(associate URI with UI state)

window.onpopstate = function(event) {

//history state changed, synchronize the UI: document.location;

document.location.hash; //#URI fragment event.state //UI state object

};

React to navigation along the history (back/forward)

history.back(); history.forward();

Programmatically navigate along the history

(5)

AJAX

AJAX combines different technologies:

HTML5 and CSS in the display

Dynamic display and interaction with DOM

Data interchange and manipulation using

XML/XSLT

(JSON)

Asynchronous data retrieval with

XMLHttpRequest

Javascript binding everything together

Synchronous Interaction

The user waits for the server to process each

request

Web Browser Web Server

Asynchronous Interaction

The UI thread is never blocked since server

interactions run in the background

Web Browser Web Server

UI AJAX

(6)

XMLHttpRequest (GET, Synch)

function GET(url) {

var r = new XMLHttpRequest(); r.open("GET", url, false); r.send(null);

//this will continue after the response has arrived if (r.status == 200) return r.responseText; else //handle error } false = synchronous responseText contains the JSON string to be parsed

XMLHttpRequest (GET, Asynch)

function GET(url, callback) {

var r = new XMLHttpRequest(); r.open("GET", url, true);

r.onreadystatechange = function() { if (r.readyState == 4) { if (r.status == 200) callback(r.responseText); else //handle error } } r.send(null);

//this will continue immediately } true = asynchronous readyState 0 uninitialized 1 opened 2 sent 3 receiving 4 complete 26 / 29

XMLHttpRequest (POST, Asynch)

function POST(url, params, callback) {

var r = new XMLHttpRequest(); r.open("POST", url, true);

r.onreadystatechange = function() { if (r.readyState == 4) { if (r.status == 200) callback(r.responseText); } } r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); r.send(params);

//this will continue immediately }

References

Gottfried Vossen, Stephan Hagemann, Unleashing Web 2.0 – From Concepts to Creativity, Morgan Kaufmann, 2007

Paul Graham,

, September 2001. Adam Bosworth,

, Jan 2007 Jesse James Garrett,

, Feb 2005 Tim O'Reilly,

, Sept 2005

The Other Road Ahead (On the advantages of Web applications) (http://www.paulgraham.com/road.html)

Why AJAX Failed (Then Succeeded)

(http://www.eweek.com/c/a/IT-Infrastructure/Googles-Bosworth-Why-AJAX-Failed-Then-Succeeded/)

Ajax: A New Approach to Web Applications (http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications)

What Is Web 2.0 - Design Patterns and Business Models for the Next Generation of Software

(http://oreilly.com/web2/archive/what-is-web-20.html)

References

Related documents

Such a system is obtained through the use of a protocol based on a modified version of SSL using X.509 certificates containing encrypted symmetric keys that allow master devices

“The period in respect of which interest is payable is the period commencing on the day as from which it was unreasonable for the insurer to have withheld payment of the amount

l   Assurance of protocol compliance allows service providers to dedicate resources. to address their

Browser Request rich client code Data synchronization and application updates Lotus Workplace Rich Client One-time client code download (Windows or Linux).. IBM Workplace

The purpose of this project was to evaluate if the IBR program at SHZCH improves the patient’s perception of communication with nursing as evidenced by improved patient

The tortuous debate about aviation capacity in the South East of England which spans across more than four decades, and is yet to produce an effective way of tackling congestion

Given the relationship between bilingualism and executive function already established, the real question is will individuals coming out of an elementary school two- way

Purified enzyme exhibited maximum activity at 60°C and maintains significant activity at 50°C and 70°C ( Figure 5 ) indicating its thermostabilty and it is not surprising