Tecnologie per il Web Il web: architettura e tecnologie principali Una analisi delle principali tecnologie per il web Tecnologie di base http, ssl, browser, server, firewall e proxy Tecnologie lato client html, linguaggi di scripting (javascript, vbscript), applet, tecnologie basate su plugin (flash, vrml,...) Tecnologie lato server cgi-bin, linguaggi di scripting (asp, jsp, php), servlet Gianpaolo Cugola - Sistemi Informativi in Rete 1 Il web: Architettura Browser LAN URL MIME HTML javascript vbscript applet flash vrml... Firewall LAN-WAN Proxy Application Server Gateway Server web Gianpaolo Cugola - Sistemi Informativi in Rete 2 Cache Log WAN WAN DB... CGI HTML, ASP, JSP, PHP GIF, JPEG Programmi CGI Servlet Prot. applicativo SSL: Secure Socket Layer Il protocollo per la comunicazione tra browser e server Sfrutta una connessione TCP sulla porta 80 Usa gli URL come meccanismo di indirizzamento Usa il protocollo MIME per definire il tipo dei dati trasportat Gianpaolo Cugola - Sistemi Informativi in Rete 3 Protocollo per la comunicazione sicura tra due partner Originariamente sviluppato dalla Netscape è oggi uno standard accettato dalla IETF Nasce per risolvere i problemi di sicurezza nella comunicazione tra client e server web ma definisce un protocollo generale indipendente dall applicazione Si utilizzano url del tipo https:/ /... per indicare comunicazione basata su SSL È stato pensato per essere facilmente estensibile e configurabile Caratteristiche: Protocollo con connessione (client e server mantengono diverse informazioni relativi alla sessione a partire dalla chiave crittografica) Basato su TCP/ IP (porta 443) Comunicazione crittografata Possibilità di mutua autenticazione tra client e server basata su certificati Caching dei parametri della comunicazione per un efficiente ripristino di comunicazioni interrotte 4
Il browser Il server web Gioca il ruolo del client Gestisce l interazione con l utente Interpreta il linguaggio html e presenta i dati a video Generalmente include: un interprete per i principali linguaggi di scripting lato client...... una JVM per l esecuzione degli applet...... e la possibilità di invocare plug-in per visualizzare i formati non direttamente supportati Esempi: MS Internet Explorer, NS Mozilla,... Risponde alle richieste del browser Trasmettendo i dati richiesti (file html, immagini, applet, script flash,...) Invocando i programmi cgi Spesso include: un interprete per i principali linguaggi di scripting lato server...... una JVM per l esecuzione delle servlet... Esempi: MS Internet Information Server, Netscape Server, Apache Gianpaolo Cugola - Sistemi Informativi in Rete 5 Gianpaolo Cugola - Sistemi Informativi in Rete 6 Proxy e Firewall Linguaggi di scripting lato client Proxy Si pone come intermediario tra client e server Effettua il caching delle pagine web in maniera da migliorare le prestazioni percepite dall utente... Riducendo il traffico di rete Firewall Filtra le comunicazioni per aumentare la sicurezza In base al protocollo e/ o agli indirizzi sorgente e destinazione Generalmente: blocca tutte le comunicazioni provenienti dall esterno...... lascia passare le comunicazioni provenienti dall interno Gianpaolo Cugola - Sistemi Informativi in Rete 7 E possibile inserire piccoli programmi all interno del codice html (tag <script>) Tali programmi vengono interpretati dal browser Attraverso tali linguaggi è possibile definire pagine web dinamiche Il cui aspetto e contenuto cambia in risposta a eventi compiuti dall utente (es. click del mouse,...) Principali linguaggi: Javascript: simile a Java, standard (ECMA script), utilizzabile con tutti i principali browser VBscript: derivato dal Visual Basic, proprietario (MS), direttamente utilizzabile con il solo Internet Explorer Gianpaolo Cugola - Sistemi Informativi in Rete 8
Javascript: Esempio Applet <html> <head> <script language="javascript"> function red_blue(data) { if(data.style.color=="red") data.style.color="blue"; else data.style.color="red"; } </script> </head> <body bgcolor="#ffffff"> <h1 onclick="red_blue(this);">prova di javascript</h1> Cliccare sul titolo per cambiare colore. </body> </html> Gianpaolo Cugola - Sistemi Informativi in Rete 9 E possibile specificare (tag <applet>) che in un certo punto di una pagina web deve essere inserita una applicazione Java Il file.class dell applicazione viene scaricato dal server ed eseguito dal browser (che integra una JVM) Attraverso gli applet è possibile eseguire applicazioni di ogni tipo sul client scaricandole dinamicamente dal server Si tratta d un esempio di mobilità di codice Esempi di applet: Bottoni animati, banner pubblicitari, giochi, client per chat e altre applicazioni distribuite,... Gianpaolo Cugola - Sistemi Informativi in Rete 10 Plugin Flash Plugin: Programmi esterni che si integrano con l interfaccia del browser per gestire formati proprietari I browser più avanzati sono capaci di invocare plugin per gestire i formati che non vengono supportati direttamente Esempio: Macromedia flash player, plugin vrml,... Linguaggio definito da Macromedia per descrivere pagine multimediali animate Integra funzionalità di descrizione di pagina (orientate a pagine grafiche) con un linguaggio di scripting per la gestione delle animazioni e degli eventi utente Particolarmente indicato per pagine con grafica animata Gianpaolo Cugola - Sistemi Informativi in Rete 11 Gianpaolo Cugola - Sistemi Informativi in Rete 12
VRML: Virtual Reality Modeling Language CGI: Common Gateway Interface Si tratta di un linguaggio per la descrizione di ambienti ( mondi ) 3D...... contenenti hyperlink ad altri mondi o a pagine 2D in HTML Nell ultima versione supporta effetti complessi come luci di vario tipo, texture, effetto nebbia, meccanismi di collision detection, suoni...... e si integra con Java e Javascript per la gestione dinamica dei mondi Non è un estensione di HTML, bensì ne è un complemento, pertanto richiede browser o plug-in dedicati I mondi VRML possono essere creati a mano, ma solitamente vengono costruiti attraverso appositi editor grafici Si tratta di uno standard per interfacciare applicazioni esterne con server H TTP Esempi di utilizzo: generazione automatica di documenti prelevando dati da DB, interpretazione di dati provenienti da form, comunicazione con server applicativi di tipo diverso,... A fronte di una richiesta da parte del client viene eseguito sul server un programma che riceve come parametri i valori specificati nella richiesta Il programma produce una risposta che viene impacchettata dal server e instradata al client 14 CGI: Funzionamento Un URL può referenziare un programma Il server viene configurato in modo da tradurre particolari path (solitamente.../ cgibin) in invocazioni di programmi in particolari directory (ad es. / www/ scripts) http://www.ms.com/cgi-bin/prg.tcl/usr/info?choice=yes&q=high Directory CGI Programma Informazioni Extra Query data 15 Programmi CGI e comunicazione server-gateway I programmi CGI possono essere scritti in qualunque linguaggio di programmazione C, C++, Tcl, Perl, Bourne shell,... Esistono diverse librerie per l implementazione di programmi CGI Per estrarre i dati provenienti dal client...... e per generare la risposta La comunicazione tra server e gateway sfrutta speciali variabili d ambiente e/ o lo standard input per i dati in ingresso...... mentre i risultati sono prodotti dal gateway sullo standard output Una volta che il programma CGI ha generato una risposta, il server vi aggiunge tutti i campi necessari alla gestione del protocollo (codice di stato, autenticazione etc.) e la spedisce al client 16
Linguaggi di scripting lato server Servlet Invocare programmi esterni per generare pagine web al volo è molto costoso in termini prestazionali Per ottenere lo stesso risultato si possono usare script inseriti all interno della pagina html...... interpretati dal server per generare la pagina finale vera e propria Principali linguaggi oggi in uso: VBscript (ASP - Active Server Pages), Javascript (JSP - Java Server Pages), PHP (opensource) Programmi del tutto equivalenti ai programmi CGI ma scritti in Java, compilati, ed eseguiti in una JVM integrata nel server Usate per generare pagine al volo...... accedendo a DBMS esterni...... o comunicando con server applicativi di tipo diverso Più efficente rispetto alle tecnologie interpretate (si esegue codice Java compilato ) e anche rispetto al protocollo CGI (la JVM nella quale le servlet eseguono è integrata nel server web) Gianpaolo Cugola - Sistemi Informativi in Rete 17 Gianpaolo Cugola - Sistemi Informativi in Rete 18