Title: Cenni alle applicazioni distribuite e alle tecnologie per il web
1Cenni alle applicazioni distribuite e alle
tecnologie per il web
- Politecnico di Milano
- Facoltà di Disegno Industriale
- Gianpaolo CugolaDipartimento di Elettronica e
Informazionecugola_at_elet.polimi.ithttp//www.elet
.polimi.it/cugola
2Applicazione 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 nellesecuzione dellapplicazione
3Caratteristiche 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
4Le 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
5Il www come esempio di applicazione C/S
6Scomposizione 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)
7Architetture a due livelli
Accessoremotoai dati
Presentazionedistribuita
Presentazioneremota
Logica distribuita
Base Datidistribuita
GUI
GUI
GUI
GUI
GUI
Client
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Dati
GUI
Server
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Dati
Dati
Dati
Dati
Dati
8Architetture a due livelli
- Presentazione distribuita tutta lintelligenza
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 allutente 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 dellapplicazione
e suddivisa tra client e server
9Architetture 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)
10Architetture a tre livelli
Schema tipico
Schemi alternativi
GUI
GUI
GUI
GUI
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Programmiapplicativi
Dati
Dati
Dati
Dati
11Architetture a tre livelli Caratteristiche
- Nello schema tipico il componente intermedio
contiene tutta la logica dellapplicazione. - 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
12Architetture a tre livelli, un esempioil Web
DBMSServer
- Moduli CGI
- Servlet
- Script ASP
Web Server
- Documenti HTML
- Codice Servlet
13Architetture a due e n livelli
2 livelli
Server
Client
Logicadellapplicazione
Gestione dei dati
Presentazione
Server
Componenteintermedio
Client
Componenteintermedio
Componenteintermedio
N livelli
14Tecnologie 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
15Il web Architettura di dettaglio
HTML javascript vbscript applet flash vrml ....
ApplicationServer
HTTP
16HTTP
- 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
17SSL 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
dallapplicazione - 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
18Il browser
- Gioca il ruolo del client
- Gestisce linterazione con lutente
- 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 lesecuzione degli applet ...
- ... e la possibilità di invocare plug-in per
visualizzare i formati non direttamente
supportati - Esempi MS Internet Explorer, NS Mozilla, ...
19Il 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 lesecuzione delle servlet ...
- Esempi MS Internet Information Server, Netscape
Server, Apache
20Proxy e Firewall
- Proxy
- Si pone come intermediario tra client e server
- Effettua il caching delle pagine web in maniera
da migliorare le prestazioni percepite
dallutente... - 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
dallesterno... - ... lascia passare le comunicazioni provenienti
dallinterno
21Linguaggi di scripting lato client
- E possibile inserire piccoli programmi
allinterno del codice html (tag ltscriptgt) - 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 dallutente (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
22Javascript Esempio
- lthtmlgt
- ltheadgt
- ltscript language"Javascript"gt
- function red_blue(data)
- if(data.style.color"red") data.style.color"bl
ue" - else data.style.color"red"
-
- lt/scriptgt
- lt/headgt
- ltbody bgcolor"FFFFFF"gt
- lth1 onclick"red_blue(this)"gtProva di
javascriptlt/h1gt - Cliccare sul titolo per cambiare colore.
- lt/bodygt
- lt/htmlgt
23Applet
- E possibile specificare (tag ltappletgt) che in un
certo punto di una pagina web deve essere
inserita una applicazione Java - Il file .class dellapplicazione 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,
...
24Plugin
- Plugin Programmi esterni che si integrano con
linterfaccia 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, ...
25Flash
- 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
26VRML Virtual Reality Modeling Language
- Si tratta di un linguaggio per la descrizione di
ambienti (mondi) 3D... - ... contenenti hyperlink ad altri mondi o a
pagine 2D in HTML - Nellultima 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 è unestensione 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
27CGI 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
28CGI 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
yesqhigh
Directory CGI
Programma
Informazioni Extra
Query data
29Programmi 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 limplementazione
di programmi CGI - Per estrarre i dati provenienti dal client...
- ... e per generare la risposta
- La comunicazione tra server e gateway sfrutta
speciali variabili dambiente 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
30Linguaggi 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 allinterno 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)
31Servlet
- 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)