Programmazione Web
Introduzione
2014/2015
1
Un'applicazione Web (I)
2014/2015
Programmazione Web - Introduzione
2
Un'applicazione Web (II)
2014/2015
Programmazione Web - Introduzione
3
Un'applicazione Web (III)
2014/2015
Programmazione Web - Introduzione
4
Un'applicazione Web (IV)
2014/2015
Programmazione Web - Introduzione
5
Un'applicazione Web (V)
2014/2015
Programmazione Web - Introduzione
6
Un'applicazione Web (VI)
2014/2015
Programmazione Web - Introduzione
7
Un'applicazione Web (VII)
2014/2015
Programmazione Web - Introduzione
8
Un'applicazione Web (VIII)
2014/2015
Programmazione Web - Introduzione
9
Cronologia di Internet
1961-1964 ricerche sulla commutazione di pacchetto
(Leonard Kleinrock)
1967 Nasce il progetto Arpanet
1969 Primo login di Arpanet
1972 Prima demo pubblica
1972-74 Lavori di Cerf e Kahn su TCP
1979 Nasce CSNET
1983 TCP/IP protocollo ufficiale Arpanet
1986 Entra in funzione la rete ad uso civile NSFNET
... Il Web non
2014/2015
esiste ancora...
Programmazione Web - Introduzione
10
Cronologia del Web
1989 Tim Berners Lee pubblica “Hypertexts at
Cern”
1990-91 Il primo browser WWW in uso al Cern
1994 Marc Andressen fonda Netscape
1995 versione 1.0 di MS Internet Explorer
(progetto O’Hare, distribuito con il nome di
Internet Jumpstart Kit in Microsoft Plus! per
Windows 95)
2014/2015
Programmazione Web - Introduzione
11
Applicazioni come sistemi distribuiti
Le applicazioni Web sono organizzate secondo la cosiddetta architettura
client-server:
 se l’utente opera con un calcolatore connesso a una rete (o comunque
un dispositivo capace di connettività, come un telefono cellulare), l’unico
sottosistema che deve essere eseguito localmente è l’interfaccia utente,
chiamato in questo caso componente client dell’applicazione
 i sottosistemi di gestione dati e di logica applicativa, che costituiscono
il componente server dell’applicazione, possono risiedere ed essere
eseguiti su un calcolatore remoto (cioè fisicamente distante), purché
appunto connesso al dispositivo impiegato dall’utente
2014/2015
Programmazione Web - Introduzione
12
Comunicazione tra client e server
1. il componente server viene messo in esecuzione sul calcolatore server dal gestore
del servizio, e si pone in attesa, in ascolto sulla rete
2. il componente client viene eseguito dall’utente,
3. l’utente interagisce con il client per elaborare la richiesta da inviare al server
4. il client invia la richiesta al server
5. ricevendo la richiesta, il server si attiva per elaborare i dati ricevuti e produrre
una risposta
6. il server manda la risposta al client attraverso la rete
7. ricevendo la risposta, il client ne presenta il contenuto all’utente
1
7
2
2014/2015
Infrastruttura di rete
5
4
3
Utente
6
Client
Server
Programmazione Web - Introduzione
13
Il Web e l'architettura client-server
1. il componente server (server web) viene messo in esecuzione sul calcolatore server dal
gestore del servizio (www.curioso.it), e si pone in attesa, in ascolto sulla rete
2. il componente client (browser) viene eseguito dall’utente
3. l’utente interagisce con il client per elaborare la richiesta
(http://www.curioso.it/CoseInteressanti/BelloQuesto.txt)
4. il client invia la richiesta al server
5. ricevendo la richiesta, il server si attiva per produrre una risposta (il file di testo richiesto)
6. il server manda la risposta al client attraverso la rete
7. ricevendo la risposta, il client presenta il contenuto del file di testo all’utente
7
6
2
2014/2015
5
Internet
4
3
Utente
1
Server
Client
Programmazione Web - Introduzione
14
Il Web e l'architettura client-server
Il client invia la richiesta al server nella seguente forma
GET /CoseInteressanti/BelloQuesto.txt HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept: */*
Ricevendo la richiesta il server cerca il file richiesto (/CoseInteressanti/BelloQuesto.txt)
e, trovatolo, produce un messaggio del tipo:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
content-type: text/plain
content-length: 14
Saluti a tutti
2014/2015
Programmazione Web - Introduzione
15
HTTP: un protocollo applicativo
Perché un client e un server possano comunicare:
 non è sufficiente che siano in grado di scambiarsi richieste e risposte
 è necessario che tali richieste e risposte siano scritte in un formato concordato
Client e server devono “parlare la stessa lingua”, cioè devono condividere uno stesso
protocollo applicativo.
Nel caso del Web il protocollo applicativo, che specifica il formato dell’intestazione
sia della richiesta del browser sia della risposta del server web, è HyperText Transfer
Protocol (HTTP)
Un esempio di risposta:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
content-type: text/plain
content-length: 14
Intestazione HTTP, con dati sul server web che
ha prodotto la risposta e sul file restituito
Saluti a tutti
Linea bianca: separatore tra intestazione e corpo del messaggio
Corpo del messaggio: contenuto del file restituito
2014/2015
Programmazione Web - Introduzione
16
Identificazione delle risorse
Per poter accedere ai servizi applicativi messi a disposizione dai server sulla
rete e creare quindi un’applicazione distribuita, è necessario che ognuno di
tali servizi risulti univocamente identificabile da parte dei client
Nel caso di Internet si è standardizzato uno schema uniforme di identificazione
applicativa, che consente di assegnare un metodo di accesso e un indirizzo,
chiamati congiuntamente Uniform Resource Locator (URL), a ogni risorsa
presente sulla rete
In generale, un URL ha la forma protocollo://host:portaTCP/risorsa
Per esempio http://server1.isttec.liuc.it:80/dida/calendario.htm
protocollo applicativo
adottato
2014/2015
indirizzo del server
web cui è inviata la
richiesta
porta TCP su cui è in
esecuzione il server web
Programmazione Web - Introduzione
nome completo
del file richiesto
17
Architetture a più livelli
1. il componente server viene messo in esecuzione sul calcolatore server dal gestore del servizio, e si
pone in attesa, in ascolto sulla rete
2. il componente client viene eseguito dall’utente,
3. l’utente interagisce con il client per elaborare la richiesta da inviare al server
4. il client invia la richiesta al server
5. ricevendo la richiesta, il server riconosce che fa riferimento a un programma e mette in esecuzione
tale programma (back-end)
6. il programma di back-end produce un risultato e lo rende disponibile al server web
7. il server acquisisce il flusso dati, antepone un’opportuna intestazione HTTP e quindi invia il risultato
come risposta al client, che ne presenta il contenuto al client (8)
Internet
8
2
2014/2015
6
7
4
3
Utente
5
1
Client
Server
Programmazione Web - Introduzione
5 back-end
18
Architetture a più livelli
Combinazione di due sottosistemi client-server:
 il browser opera come client verso il server web, inviandogli una richiesta e
aspettando da esso una risposta
 il server web assume temporaneamente un ruolo di client, inviando una richiesta a un
altro server (il programma di back end) e attendendo da esso una risposta
Architettura basata su un principio di deleghe successive:
 un client non è in grado di svolgere un compito applicativo e quindi si rivolge a un
server
 se tale server non è in grado di soddisfare la richiesta può a sua volta trasformarsi in
un client per rivolgersi a un secondo server
Svantaggio
–complessità architetturale
Vantaggio
–specializzazione: ogni sottosistema è realizzato per svolgere un compito particolare e
deve rispettare il protocollo applicativo con i sottosistemi delegati
2014/2015
Programmazione Web - Introduzione
19
Architetture a più livelli
Se la logica applicativa richiede una gestione dei dati sofisticata, “dietro” al back end può esserci un
DBMS
Si realizza così un’architettura “a quattro livelli”, con il back end che funge temporaneamente da client
del DBMS
La presenza di un “gestore di componenti distribuiti” consente la completa generalizzazione di questa
architettura:
 quando c’è un componente che realizza una funzione applicativa richiesta, il back end può richiamare
tale componente invece di implementare nuovamente la stessa funzione
 con questo approccio il back end diventa lo strumento che coordina l’intervento di un insieme
di componenti in vista della finalità applicativa richiesta (si parla di component-ware distribuito)
Internet
Utente
2014/2015
Client
Server
Programmazione Web - Introduzione
back-end
DBMS
20
mittente
Posta elettronica
mail client
Il client invia il messaggio al server incaricato della
spedizione; il protocollo applicativo utilizzato è
Simple Mail Transfer Protocol (SMTP)
mail server Il server del mittente invia il
mittente messaggio al server che mantiene
Il mittente opera con un client
(Outlook, Eudora, Thunderbird, …)
e prepara il messaggio
SMTP
la mailbox del destinatario
(ancora SMTP)
destinatario
SMTP
Il server del destinatario
conserva il messaggio nella
mailbox del destinatario
mail client
Il client riceve il messaggio
(ancora POP o IMAP)
POP/IMAP
mail server destinatario
2014/2015
Il client del destinatario accede alla mailbox
usando il protocollo applicativo POP (Post Office
Protocol) oppure IMAP (Internet Message Access
Protocol)
Programmazione Web - Introduzione
21
Web dinamico
 Gli attori dell’architettura client-server dinamico
– Web browser dinamico, esegue programmi client-side, client-side
scripting (Javascript, VisualBasic scripting), client-side
components (Java Applets, Microsoft ActiveX, Macromedia Flash
movies)
– Web server dinamico, esegue applicazioni server-side, tecnologie
CGI, Java Servlet,, PHP, JSP, server-side scripting
 Pensato per produrre pagine “on-the-fly” in base alle esigenze
dell’utente e a contenuti strutturati (per ex. database)
– per esempio, le news sulla pagina Web di un giornale on-line
vanno aggiornate ogni giorno pescando le nuove notizie da un
repository sottostante
– la pagina HTML di risposta NON ESISTE così com’è sul server,
viene generata dinamicamente in base alle elaborazioni effettuate
2014/2015
Programmazione Web - Introduzione
22
Client-side scripting
Il codice script è interpretato dal browser
Contenuto
Textbox
+
Ciao!
script
=
pagina interattiva
2014/2015
testo
Programmazione Web - Introduzione
23
Server-side scripting
Idea: inserire istruzioni per il calcolo dei contenuti dinamici
all’interno della pagina HTML
Il codice è interpretato dal server
Il browser riceve HTML puro
<HTML>
….
</HTML>
<%>
…...
</%>
<HTML>
<BODY>
….
</BODY>
</HTML>
Web server +
Esecutore script
2014/2015
Programmazione Web - Introduzione
24
Scarica

L1_Introduzione