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
Scarica

distribuita - Politecnico di Milano