protocolli e architetture per wis. cronologia di internet 1961-1964 ricerche sulla commutazione di...
TRANSCRIPT
Protocolli e architetture Protocolli e architetture per WISper WIS
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 esiste ancora..
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)
ARCHITETTURA BASE CLIENT SERVER
Web server
FILE SYSTEM - pagine statiche
A.html
B.html
C.html
D.html
HTTPWeb client
(browser)
Il protocollo HTTP
• HyperText Transfer Protocol• Protocollo a livello di applicazione per lo scambio di
ipertesti multimediali• Prescrive il formato di– nomi delle risorse (URL)– domande– risposte
• Versioni: HTTP/0.9, 1.0,
Web browser (client)
• Applicazione in grado di:– accedere alla rete secondo il protocollo HTTP– richiedere risorse (pagine Web) identificate da un URL
a un server– interpretare comandi di formattazione (pagine Web
HTML) e rendere a video la risposta del server
Web browser dinamico
– capacita’ di eseguire script• Client-side scripting (ad es. JavaScript, VisualBasic scripting)• Javascript permette di scrivere script in pagine web, eseguiti
dal browser, che accedono a oggetti del browser modificandoli dinamicamente
– capacita’ di eseguire programmi (es. Java applets)• Programmi java inseriti in pagine web ed eseguiti all’interno di
pagine web, mediante Java virtual machine
Client-side scripting• Obiettivo: rendere le pagine più interattive• Soluzione: inserire nella pagina HTML piccoli programmi detti
script • Uno script reagisce a un evento prodotto dall’utente e modifica il
documento• Il codice script è interpretato dal browser
+ marcatura &+ marcatura &scripting scripting
<HTML> <HTML> ……..</HTML> </HTML> <script> <script> ……......</script></script>
contenutocontenuto
testotesto
Ciao!Ciao!Ciao!Ciao!
TextboxTextbox
pagina interattivapagina interattiva
Web server
• Funzioni base:– accesso alla rete secondo il protocollo HTTP– invio di risorse identificate da un URL a un client
(pagine memorizzate sulla macchina server)– lancio di programmi in risposta a richieste– controllo e registrazione degli accessi =====
• Per produrre pagine “al volo” in base alle esigenze dell’utente e prelevando da contenuti strutturati (p.e. database)– Scripting client-side non basta
– Soluzioni:
Architetture per produrre contenuti dinamici a lato-server
Web server dinamico
• Funzioni avanzate:– monitoraggio e amministrazione
– connessione a basi di dati
– esecuzione efficiente di applicazioni esterne
• Web server dinamico– non solo recupera pagine HTML dal file system ma può
eseguire applicazioni
TECNOLOGIE :
CGI; API, Java Servlet; Java Server Pages JSP (..ASP, PHP)
Web server + Common Gateway Interface
Interfaccia che consente al Web Server di Interfaccia che consente al Web Server di eseguire applicazioni esterne in grado di creare eseguire applicazioni esterne in grado di creare pagine pagine dinamicamentedinamicamente
CGI
Web server + CGI
Web server
FILE SYSTEM - pagine statiche
A.html
B.html
C.html
D.html
Cgi-bin
Xyz.exe abc.exe
Pagine eseguibili
CGIHTTP
Web client (browser)
Intercetta le richieste, verifica se sono ammesse, Intercetta le richieste, verifica se sono ammesse, decodifica i parametri e lancia le applicazioni decodifica i parametri e lancia le applicazioni esterneesterne
Scopi:Scopi:Consente al web server di eseguire applicazioni Consente al web server di eseguire applicazioni richieste dal clientrichieste dal client
CGI
Caratteristiche di CGI
• CGI script, programma eseguibileCGI script, programma eseguibile• Definisce un insieme di Definisce un insieme di variabili di ambientevariabili di ambiente utili alla applicazione (ad es. parametri inviati utili alla applicazione (ad es. parametri inviati dal client)dal client)
%&£$$pp*&£$
Invio di parametri a un programma CGIInvio di parametri a un programma CGI• Il client puo’ usare due metodi:•GET•POST
•GET: i parametri sono codificati nell’URLhttp://www.mioserver.it/cgi-bin/xyz?par=val•POST : i parametri sono spediti al server separatamente, usando il body del messaggio di richiesta HTTP•NB: il metodo POST richiede l’uso di un costrutto HTML chiamato FORM (modulo da compilare)
Programma CGI- accesso BDProgramma CGI- accesso BD
Web serverWeb server
CGICGI
DBMSDBMS
Accesso a BD - CGI
1. l’utente richiede il servizio selezionando il bottone submit, dopo aver completato i campi della form
2. il server richiama il gateway
3. il gateway esegue il proprio codice con i parametri ricevuti; in questa fase può interagire con altre risorse, quindi anche con una BD.
4. il gateway restituisce i risultati al server Web
5. il server Web restituisce i risultati al client
Revisione critica di CGIRevisione critica di CGI
• Il web server genera un nuovo processo cgi ad ogni richiesta
• Il processo viene terminato alla fine del computo della risposta
• Altissimo sovraccarico di esecuzione per la creazione e distruzione di processi
• Impossibile:– Tenere informazioni sulla sessione dell’utente in memoria
centrale (serve un database)– Tenere allocate risorse condivise tra più richieste o più utenti
(es. pool di connessioni a database)
Web Server Dinamico - Application server
BROWSER
WEB SERVER
DATABASE1
API,
JAVA
SERVLET
2
JSP…
Scripted page
HTML page
Scripting lato server
Estensione con API, Servlets
Web Server - APIWeb Server - API
Web Web serverserver
DBMSDBMS
GatewayGateway
APIAPI API = interfaccia per estendere il servercon servizi non standard
Accesso a BD - JDBC
• JDBC (Java Database Connectivity): insieme di interfacce (API) che realizzano la connettività ai DBMS commerciali più diffusi
– Basato sul linguaggio Java – Offre supporto per le operazioni normalmente eseguite
su una BD attraverso SQL: • Uso di applet Java: applicazione che risiede sul server
Web e che viene scaricata e visualizzata attraverso un browser, ogni volta che la pagina HTML che la ospita viene richiesta.
• Sviluppo di vere e proprie applicazioni Java che accedono a database diversi.
Web Server - APIWeb Server - API
• PRO– efficienza: l’interfaccia e’ nello stesso processo
del Web server (es. e’ una libreria collegata dinamicamente)
• CONTRO– dipendenza da API proprietarie (NSAPI, ISAPI )
non standardizzate
Web Server - Java ServletWeb Server - Java Servlethttp://java.sun.com/products/servlet/index.html
• Applicazioni (servlet) scritte in Java • Servlet eseguite nello stesso processo del web server, per minor
carico di comunicazione interprocesso• Indipendenza dalla piattaforma grazie a Java• Sicurezza gestita mediante Security Manager della JVM• Gestione degli errori con il meccanismo delle eccezioni Java• Disponibilita’: distribuzione gratuita di Java Servlet Development
Kit contenente la libreria Java servlet
Valutazione• La presentazione HTML è mescolata al
codice applicativo• Esigenza: serve una soluzione più
semplice per produrre pagine in modo dinamico a lato server
Server-side scripting
• Idea: inserire istruzioni per il calcolo dei contenuti dinamici all’interno della pagina HTML
• Il codice è interpretato dal server
<HTML> <HTML> <BODY><BODY> … …..</BODY></BODY></HTML> </HTML>
<HTML> <HTML> ……..</HTML> </HTML> <%> <%> ……......</%></%>
Template: testo+script da interpretare sul server
Web server +Web server +Esecutore scriptEsecutore script
• JSP è una architettura per server-side scripting proposta da Sun (come alternativa a ASP di Microsoft)
• Si fonda su tecnologia Java: linguaggio Java, Java Servlet, Java Beans
• E’ necessario disporre di un ambiente di compilazione apposito (ad es. Tomcat di Apache Jakarta)
Java Server Pages (JSP)
1
Esempio Flusso dei messaggiEsempio Flusso dei messaggi
BROWSER
SERVER
DATABASE
3
5
24
6
7
8
1. L’utente richiede una pagina
2. Il server preleva la pagina
3. Il server passa il file al browser
4. L’utente compila la form e la passa al server
5. Il server esegue il codice JSP
6. Il file JSP comporta l’accesso ad un database
7. L’esecuzione JSP genera una pagina HTML
8. Il server invia la pagina HTML al browser