Cenni alle applicazioni distribuite e alle tecnologie per il web Politecnico di Milano Facoltà di Disegno Industriale Gianpaolo Cugola Dipartimento di Elettronica e Informazione [email protected] http://www.elet.polimi.it/~cugola Politecnico di Milano Applicazione distribuita Una applicazione è distribuita se: – E’ costituita da più moduli (processi) – Che eseguono in parallelo su un insieme di unità di elaborazione autonome connesse da una rete di elaborazione – Senza condividere memoria – Comunicando tramite messaggi aventi un ritardo di trasmissione non trascurabile – In presenza di una forte cooperazione tra i diversi moduli nell’esecuzione dell’applicazione Gianpaolo Cugola - Sistemi Informativi in Rete 2 Politecnico di Milano Caratteristiche di una applicazione distribuita Caratteristiche – Numero arbitrario di processi – Numero arbitrario di unità di elaborazione – Comunicazione attraverso scambio di messaggi su una rete di calcolatori – Cooperazione tra i processi Gianpaolo Cugola - Sistemi Informativi in Rete 3 Politecnico di Milano Le applicazioni client/server Con il termine “applicazione client/server” ci riferiamo ad una applicazione distribuita in cui è possibile distinguere due tipologie di componenti: Client e Server Client e server giocano ruoli diversi – Il server ha un ruolo passivo ed esporta un ben preciso insieme di servizi – Il client usa tali servizi agendo da componente attivo che da inizio alla comunicazione In generale client e server risiedono su unità di elaborazione distinte connesse da una rete di comunicazione Gianpaolo Cugola - Sistemi Informativi in Rete 4 Politecnico di Milano Il www come esempio di applicazione C/S Gianpaolo Cugola - Sistemi Informativi in Rete 5 Politecnico di Milano Scomposizione logica di una applicazione Le funzionalità offerte da una applicazione possono essere genericamente scomposte in tre insiemi – Funzionalità di interfaccia utente – Funzionalità di elaborazione – Funzionalità di gestione persistente dei dati In applicazioni C/S, a seconda di come queste funzionalità siano allocate a processi distinti, distinguiamo tra: – Architetture a due livelli (two-tiered architectures) – Architetture a tre livelli (three-tiered architectures) Gianpaolo Cugola - Sistemi Informativi in Rete 6 Politecnico di Milano Architetture a due livelli Presentazione distribuita Presentazione remota Logica distribuita Accesso remoto ai dati Base Dati distribuita GUI GUI GUI GUI GUI Programmi applicativi Programmi applicativi Programmi applicativi Client Rete Rete Rete GUI Server Dati Rete Programmi applicativi Programmi applicativi Programmi applicativi Dati Dati Dati Gianpaolo Cugola - Sistemi Informativi in Rete Rete Dati Dati 7 Politecnico di Milano Architetture a due livelli Presentazione distribuita: tutta l’intelligenza e` nel server, il client si occupa solo di interagire con il server che gli affida compiti specifici di presentazione – es: una form HTML pura presenta all’utente una maschera di inserimento dati, ma non e` in grado di effettuare nessun controllo sulla validita` dei dati inseriti Presentazione remota: tutta la parte di presentazione e` a carico del client. Logica distribuita: la logica dell’applicazione e` suddivisa tra client e server Gianpaolo Cugola - Sistemi Informativi in Rete 8 Politecnico di Milano Architetture a due livelli Accesso remoto ai dati: la presentazione e la logica sono nel client che si rivolge al server per accedere ai dati, tipicamente attraverso una interfaccia SQL Database distribuito: le funzioni di gestione dei dati sono parte nel client e parte nel server (es. Distributed Relational Database Architecture di IBM) Gianpaolo Cugola - Sistemi Informativi in Rete 9 Politecnico di Milano Architetture a tre livelli Schema tipico Schemi alternativi GUI GUI GUI GUI Rete Programmi applicativi Rete Programmi applicativi Rete Programmi applicativi Programmi applicativi Programmi applicativi Programmi applicativi Rete Rete Programmi applicativi Programmi applicativi Dati Dati Dati Rete Dati Rete Gianpaolo Cugola - Sistemi Informativi in Rete … Rete 10 Politecnico di Milano Architetture a tre livelli: Caratteristiche Nello schema tipico il componente intermedio contiene tutta la logica dell’applicazione. – Nei casi reali parti della logica sono gestite dal client e dal server Vantaggio: disaccoppiamento tra logica e dati e tra logica e presentazione – ci possono essere diverse sorgenti di dati distribuite – ci possono essere diverse tipologie di client Gianpaolo Cugola - Sistemi Informativi in Rete 11 Politecnico di Milano Architetture a tre livelli, un esempio: il Web •DBMS •TP Monitor •Ecc. LAN/ WAN •HTML •Forms Web Client Internet (TCP/IP) •Moduli CGI •Servlet •Script ASP DBMS Server •Base Dati Web Server •Applet Web Client Gianpaolo Cugola - Sistemi Informativi in Rete •Documenti HTML •Codice Servlet 12 Politecnico di Milano Architetture a due e n livelli 2 livelli Server Client Logica dell’applicazione Presentazione Client Componente intermedio Componente intermedio Componente intermedio Gestione dei dati Server N livelli Gianpaolo Cugola - Sistemi Informativi in Rete 13 Politecnico di Milano 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 14 Politecnico di Milano Il web: Architettura di dettaglio DB ... HTML javascript vbscript applet flash vrml .... Browser Application Server Prot. applicativo WAN LAN WAN LAN-WAN Gateway CGI HTTP Firewall HTTP Proxy HTTP Server web URL MIME Gianpaolo Cugola - Sistemi Informativi in Rete Cache Log HTML, ASP, JSP, PHP GIF, JPEG Programmi CGI Servlet 15 Politecnico di Milano HTTP Il protocollo per la comunicazione tra browser e server Sfrutta una connessione TCP Usa gli URL come meccanismo di indirizzamento Usa il protocollo MIME per definire il tipo dei dati trasportat Gianpaolo Cugola - Sistemi Informativi in Rete 16 Politecnico di Milano SSL: Secure Socket Layer 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 – 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 17 Politecnico di Milano Il browser 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, ... Gianpaolo Cugola - Sistemi Informativi in Rete 18 Politecnico di Milano Il server web 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 19 Politecnico di Milano Proxy e Firewall 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 20 Politecnico di Milano Linguaggi di scripting lato client 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 21 Politecnico di Milano Javascript: Esempio <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 22 Politecnico di Milano Applet 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 23 Politecnico di Milano Plugin 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, ... Gianpaolo Cugola - Sistemi Informativi in Rete 24 Politecnico di Milano Flash 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 25 VRML: Virtual Reality Modeling Language Politecnico di Milano 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 Politecnico di Milano CGI: Common Gateway Interface Si tratta di uno standard per interfacciare applicazioni esterne con server HTTP 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 27 Politecnico di Milano CGI: Funzionamento Un URL può referenziare un programma Il server viene configurato in modo da tradurre particolari path (solitamente .../cgi-bin) 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 28 Politecnico di Milano 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 HTTP (codice di stato, autenticazione etc.) e la spedisce al client 29 Politecnico di Milano Linguaggi di scripting lato server 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 o Javascript (ASP - Active Server Pages), Java (JSP - Java Server Pages), PHP (opensource) Gianpaolo Cugola - Sistemi Informativi in Rete 30 Politecnico di Milano Servlet 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 31