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