Tipi fondamentali di documenti web Statici. File associati al web server il cui contenuto non cambia. Tutte le richieste di accesso conducano alla visualizzazione della stessa informazione. Dinamici. Non esistono in formato predefinito, ma sono generati dal web server ogni volta che un browser ne fa richiesta. La generazione consiste nella esecuzione di un programma da parte del server. Il risultato cioè il documento è trasmesso dal server al browser. I contenuti visualizzati possono variare da una richiesta all’altra. Attivi Sono applicazioni che il server invia al browser richiedente che vengono eseguite dal browser. Il risultato rappresenta il documento attivo. I contenuti visualizzati possono cambiare anche in funzione dell’interazioni con l’utente 1 Pro e contro dei diversi tipi di documenti Statici Vantaggi: semplicità, affidabilità e rapidità di acquisizione e visualizzazione. Possibilità per i browser di depositarne una copia nella cache. Svantaggi: poca flessibilità, il loro aggiornamento deve essere fatto manualmente. Dinamici Vantaggi: capacità di riportare informazioni aggiornate. Adatti a registrare informazioni fluttuanti (quotazioni di borsa, previsioni meteorologiche,disponibilità di biglietti per un concerto). Responsabilità in carico ai server. Nessuna distinzione per i browser tra documenti statici e dinamici che ricevono un documento HTML. Svantaggi: maggiori costi e incapacità dei documenti di mostrare l’informazione in divenire una volta che questa è visualizzata (quotazioni di borsa). 2 Attivi Vantaggi: Capacità di aggiornarsi continuamente: può accedere direttamente alle informazioni e aggiornare continuamente i dati visualizzati (documento attivo dedicato alle quotazioni di borsa). Svantaggi:scrittura del codice in modo indipendente alla piattaforma. Sicurezza 3 Realizzazione dei documenti dinamici Modifiche al server web: 1) Deve eseguire un’applicazione che generi il documento in presenza di una richiesta. Il server riceve l’output dell’applicazione e lo invia al browser. 2) È necessario predisporre una nuova applicazione per ciascun documento dinamico. 3) Il server deve essere in grado di distinguere le stringhe URL che denotano documenti statici da quelle dei documenti dinamici e in quest’ultimo caso deve determinare l’applicazione da eseguire per la generazione del documento. 4 CGI (Common Gateway Interface) • Tecnologia ampiamente diffusa per la composizione dei documenti dinamici. Sviluppata da NCSA (National Center Supercomputer Applications). • Stabilisce le modalità di interazione tra server web e applicazioni dedicate alla generazione di documenti dinamici (programmi CGI). • Le applicazioni possono essere scritte in diversi linguaggi a seconda del tipo di documento da generare (C,C++, Perl, shell di Unix..). • I programmi CGI risiedono in una speciale directory (cgi/bin). La directory è sotto il diretto controllo del webmaster, non essendo consentito all’utente di creare programmi CGI • Output di un programma CGI può essere un documento HTML, un’immagine. Lo standard prevede l’uso di un’intestazione per distinguere tra i diversi tipi di documenti. 5 • Lo standard prescrive che sia a carico del programma CGI la predisposizione del documento prodotto a seconda della sua differente natura in modo che il server possa correttamente inviarlo al browser. Esempio: content- type: text/html <html><body> <h1> Un elenco generato da un back-end CGI </h1> 1 2 3 4 5 6 7 8 9 10 </body></html> E’compito del server inviare il documento HTML al browser utilizzando i comandi del protocollo HTTP. Il browser interpreta HTML e visualizza il contenuto del documento. 6 Due criticità: 1)I programmi back-end devono non solo includere il codice che implementa la funzione richiesta, ma anche occuparsi di gestire l’interfaccia con il browser. 2)Ad ogni richiesta per la funzione il server web deve attivare un nuovo processo che viene chiuso quando termina l’esecuzione. Più copie dello stesso processo possono essere quindi in esecuzione contemporaneamente. Problemi di performance. 7 Passaggio dei parametri Utilizzo del suffisso nella stringa URL inviata dal browser al server. Il suffisso divide la stringa URL in prefisso (che rappresenta un programma CGI) e un suffisso (che è passato al programma CGI come argomento). Sintatticamente si utilizza il punto interrogativo “?” come separatore Esempio: http://www.unibo.it/dida/cgi-bin/orario/?giorno=010901&corso=C5 8 Server script Programmi molto semplici inseriti in un documento HTML ed eseguiti sul server quando il documento è richiesto dal client. ASP (Active Server Pages). Soluzione proprietaria Microsoft (richiede Microsoft Internet Information Server-IIS come web server) Utilizza Visual Basic <html><body> <h1> Un elenco generato da un back-end ASP</h1> <script language=“vbscript” runat= “server”> For i=1 To 10 Response.Write i & “ “ Next </script> >/body></html> 9 Viene chiamato dal client tramite la URL: http://www.unserver.it/unadir/elenco.asp e produce sul browser il risultato: html><body> <h1> Un elenco generato da un back-end ASP</h1> 1 2 3 4 5 6 7 8 9 10 </body></html> Si tratta di una pagina statica dal punto di vista del browser. Il codice poteva essere eseguito anche lato client se il browser contenesse un interprete visual basic 10 Il codice potrebbe essere eseguito anche lato client se il browser contenesse un interprete visual basic: html><body> <h1> Un elenco generato dinamicamente client side in Visual-BasicScript </h1> <script language=“vbscript”> For i=1 To 10 Document.Write i & “ “ Next </script> >/body></html> 11 JavaScript (esecuzione lato client) Linguaggio molto semplice (differente da Java) utilizzato per costruire piccole applet. Le applet non sono compilate (non viene generato byte code) E’ un linguaggio interpretabile dai browser in formato sorgente Può essere integrato con HTML: i documenti in HTML possono contenere funzioni Javascript che realizzano semplici interazioni con gli utenti. Vantaggi: semplicità e facilità d’uso, integrazione con HTML, assenza di compilazione. Svantaggi: lentezza di esecuzione 12 <html><body> <h1> Un elenco generato dinamicamente client side in JavaScript</h1> <script language=“javascript”> for( i=1 ; i<=10; i++1) document.write (i+ “ “); </script> >/body></html> 13 Documenti attivi Documenti dinamici: impossibilità di modificare le informazioni contenute dopo la loro visualizzazione (es.,non possono contenere animazioni). Soluzioni al problema Server push. Il server deve eseguire il programma per la generazione del documento a ciclo continuo inviando i risultati al browser. Dal punto di vista dell’utente i contenuti della pagina continuano a cambiare mentre la si esamina. In presenza di molti client che tentano di accedere allo stesso documento, il server rischia il sovraccarico. Documenti attivi. Sono i browser ad eseguire l’elaborazione necessaria ad aggiornare il documento. Quando i server ricevono la richiesta di un documento attivo inviano al browser un programma che viene eseguito localmente. 14 Browser e server trattano i documenti attivi al pari di quelli statici per ciò che riguarda il loro trasferimento. Il browser può conservarne una copia nella cache. I documenti attivi non contengono tutto il software necessario alla loro esecuzione, perché parte di quest’ultimo è detenuto staticamente dal browser (interpreti, macchine virtuali,..). I documenti attivi sono originariamente scritti in codice sorgente .Il compilatore produce una forma eseguibile che viene inviata su richiesta al browser. L’esecuzione nel browser richiede la presenza di opportuno software per collegare le librerie richieste. Nel caso di programmi scritti in linguaggio Java, il compilatore traduce il sorgente in un formato bytecode di Java. Il bytecode è formato dall’interprete Java su l browser (JVM). 15 Applet Programma in Java che genera documento attivo. Es: import java.applet,*; import java.awt,*; public class contaclick extends Applet { int contatore ; Textfield testo; public void init( ) { contatore=0; ; add (new Button (“clicca qui”); testo= new TextField (*il pulsante non è stato ancora premuto)”; testo.setEditable(false); add (testo); } 16 public boolean action (Event e, Object arg) { if ((Button e.target).getLabel() = = “Clicca qui”) { contatore+=1 testo..set Text(*il pulsante è stato premuto”+ contatore+”volte.”); } return true; } } 17 Esecuzione delle Applet a) Viene fornita la stringa URL di un’applet ad un browser compatibile con Java. http://www.inesistente.edu/esempio/bbb.class bbb.class rappresenta un file da acquisire ed eseguire sul browser a) Viene inserita un’eticchetta applet (applet tag) all’interno di un documento HTML L’etichetta è composta da due parti dette rispettivamente codebase (base del codice) e code (codice) <applet codebase= www.inesistente.edu/esempio code= “bbb.class”>. Quando il browser incontra l’etichetta applet, contatta il server, ottiene copia del file bbb.class, costruisce un oggetto di classe bbb e chiama il suo metodo init 18 SERVLET •La risposta Java a CGI. Sono programmi java che operano sul web-server con il compito di: •Gestire le richieste del client (HTTP) •Eseguire le azioni necessarie per ottenere la risposta (esecuzione di una RMI, accesso al data-base,.. ) •Preparare i risultati in un documento HTML •Inviare la risposta tramite HTTP (formato testo-HTML,formato binario –GIF, formato compresso) 19 Vantaggi delle servlet rispetto a CGI • Con CGI ogni nuova richiesta da luogo ad un processo. Con servlets la JVM genera un thread. Problemi di efficienza per il cambio di contesto. • Con CGI se ci sono n richieste per lo stesso programma, il codice per il programma viene caricato n volte. Con servlets ci sono n thread, ma una sola copia della servlet class. • Portabilità: servlet sono scritte in Java e quindi sono eseguibili su tutti i web server dotati di JVM 20 JAVA SERVER PAGES(JSP) • La tecnologia JSP consente di inserire in documenti HTML contenuti generati dinamicamente dalle servlet. • Concettualmente è simile a ASP con alcuni vantaggi. La parte dinamica è scritta in Java e non VBScript e quindi è più potente per applicazioni complesse che richiedono componebti riusabili. Inoltre ha il vantaggio della portabilità. •Esistono altri prodotti , PHP e ColdFusion entrambi basati su un linguaggio proprietario 21