Architetture Web I Server Web e gli Standard della Comunicazione Alessandro Martinelli alessandro.martinelli@unipv.it 1 Aprile 2014 Architetture Web I Server Web e gli Standard della Comunicazione Il Server Side I Server Web Il Formato XML Fondamenti di Informatica II
il Server Side Il Server Side Che cosa deve poter fare un Server Web? Deve possedere un indirizzo IP ed un hostname registrati presso qualche DNS. Deve avere un applicativo che supporta il Protocollo HTTP. Deve mantenere su qualche disco un albero di contenuti web: file html, immagini, file javascript, file css, jars etc. Mantenere una mappa che associa agli URI le risorse memorizzate in locale. Che cosa può fare un Server Web? Riconoscere che più richieste HTTP arrivano dallo stesso utente. Anzichè fornire dei file HTML memorizzati nel file System, il Server può elaborare i contenuti mediante codice di programmazione. L Elaborazione dei contenuti può avvenire in molti modi A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 2 / 22
il Server Side Elaborazione dei contenuti HTML Alcune tecnologie Server-Side per l elaborazione dei contenuti HTML CGI (Common Gateway Interface): la prima tecnologia, basata su una serie di interfacce disponibili nei linguaggi C/C++ e Perl PhP (PHP: Hypertext Preprocessor, l acronimo è ricorsivo): la tecnologia ad oggi più diffusa, più documentata ed utilizzata. Servlet : tecnologia Java. Il termine deriva da un parallelo col termine Applet. JSP (Java Server Pages) : una ulteriore alternativa in Java, legata alla Servlet, ma con un meccanismo di elabotazione dei contenuti HTML più simile a quello del PhP. ASP (Active Server Pages) : tecnologia caratteristica dei Server Microsoft. I Ruoli di queste tecnologie: Usano codice di programmazione per alterare il contenuto delle Pagine HTML. Fornire strumenti per la gestione delle sessioni. Fornire librerie per l utilizzo delle basi di dati, nei servizi web dove questo sia utile. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 3 / 22
PhP Php : Hypertext Preprocessor Il linguaggio Php è un linguaggio di scripting che consente di alterare il contenuto di un file HTML. I semi Tag speciali <? o <?php e >? consentono di inserire codice PhP all interno del codice HTML. Quando la pagina viene interpretata dall interprete PhP, il codice PhP viene rimosso ed eseguito. Al posto del codice Php nella pagina compaiono eventuali stringhe di testo prodotto attaverso funzioni di stampa come print o echo. Il linguaggio è di tipo procedurale e ricorda sotto certi aspetti il linguaggio C, anche se di recente è stato esteso con funzionalità ad oggetti. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 4 / 22
PhP Php : un Esempio Codice PhP <html> <head> <title> Esempio 1 </title> </head> <body> <?php echo Ciao Studenti del Corso di Fondamenti!! ;?> </body> </html> Codice Html <html> <head> <title>esempio 1</title> </head> Ciao Studenti del Corso di Fondamenti!! <body> </body> </html> Quando questa pagina viene richiesta al Server, il codice php viene interpretato da un interprete php che rielabora il contenuto html prima che venga spedito via http. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 5 / 22
PhP Il Concetto di Sessione Una Sessione è una catena di richieste-risposte che un Client ed un Server si effettuano a vicenda. Durante una sessione il Server si ricorda del Client con cui sta comunicando. Ogni sessione è caratterizzata da: Fase di Apertura Messaggi Chiusura Uno dei ruoli più importanti dei linguaggi di elaborazione Lato Server è quello di fornire contenuti HTML differenti a seconda di informazioni mantenute all interno di una sessione. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 6 / 22
PhP Il Concetto di Sessione : un Esempio PhP (Server)sessione.php <?php session start(); $user= Utente Generico ; if(isset($ GET[ user ])) $user=$ GET[ user ]; else if(isset($ SESSION[ user ])) $user=$ SESSION[ user ]; $ SESSION[ user ]=$user;?> <html> <head> <title>esempio 2</title></head> <body> <?php echo Ciao ; echo $ SESSION[ user ]; echo!?> </body> (Client, prima volta)sessione.php <html> <head> <title>esempio 2</title></head> <body> Ciao Utente Generico! </body> </html> (Client, seconda volta)sessione.php?user=marco <html> <head> <title>esempio 2</title></head> <body> Ciao Marco! </body> </html> A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 7 / 22
PhP Elaborazione dei Contenuti: Il Server SQL I Dati delle Applicazioni Distribuite sulla Rete sono solitamente descritti all interno di Tabelle secondo le strutture previste dal Modello Relazionale. I Server DB offrono un meccanismo di catalogazione e recupero dei dati mediante lo standard SQL ( Structured Query Language ). Linguaggi come il Php contengono istruzioni per Aprire una Sessione con una Base di Dati e formulare una Serie di Interrogazioni. Questo consente di trasformare le pagine Web in applicazioni, in grado di memorizzare nel tempo i dati degli utenti che transitano sul Web, e di visualizzarli quando necessario. Il Server SQL Il Server SQL è in grado di interagire con qualsiasi client attraverso il linguaggio SQL, che consente l inserimento e le interrogazioni sui dati, organizzati in Tabelle come previsto dal Modello Relazionale. Il Modello Relazionale, il Linguaggio Standard SQL ed i metodi per la strutturazione dei Dati saranno i temi principali del corso di Basi di Dati. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 8 / 22
PhP Php ed SQL : Un Esempio (1/2) Alcune Query (Interrogazioni) SQL select count(*) from Studenti: Conta tutti i record del DB Studenti select * from Studenti: Restituisce tutti i record del DB Studenti. select Matricola from Studenti: Restituisce solo l elenco delle Matricole. Solitamente, nelle API che danno accesso all SQL i dati sono restituiti all interno di vettori. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 9 / 22
PhP Php ed SQL : Un Esempio (2/2) Codice php: lettura dei Dati <?php $dbconnection=mysql connect($dbhost, $dbuser, $dbpass); mysql select db( studenti fiii ); $query=select * from Studenti; $res=mysql query($query); if($res!=false){ while($riga = mysql fetch array($res)){?> Matricola: <?php echo $riga[ Matricola ];?>, Nome: <?php echo $riga[ Nome ];?>, Cognome: <?php echo $riga[ Cognome ];?> <br/> <?php } mysql close($dbconnection); }?> A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 10 / 22
I Server Web I Server Web Nel Mondo del Web, il termine Server è inevitabilmente legato a doppio nodo con alcune Tecnologie Standard. Tra queste ricordiamo: Il Server Open Apache HTTP. Il Server Open Apache TomCat. Server Microsoft Internet Information Services. Il Database MySql. Il Sistema di Database Oracle. Il Sistema di Applicazioni e librerie Java Enterprise Edition. L Apache HTTP Server L Apache HTTP Server è nel modo più assoluto il Server Web più diffuso, ed è spesso utilizzato in combinazione con il suo interprete PhP. Apache è anche il nome di un Gruppo di Sviluppo Open, che negli anni ha contribuito, oltre che all ononimo Server HTTP, allo sviluppo di un grande insieme di Server per il Web. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 11 / 22
I Server Web Il Server Apache TomCat e le Servlet TomCat è il Sistema Server Web di riferimento nel mondo Java. Sviluppato da Apache. E Basato sulla Tecnologia Java Servlet. Supporta inoltre la tecnologia JSP (Java Server Page), tecnologia molti simile come meccanismo al PhP, ma dove gli script sono scritti in linguaggio quanto più simile a Java. Le Pagine JSP sono ricompilate sotto forma di Servlet. Java Servlet Il Termine deriva da Server Let, ed è nato con riferimento al termine Applet. Le Servlet sono Classi Java che implementano un servizio di risposta HTTP, utilizzando codice Java per l elaborazione dinamica dei contenuti HTML e per l interogazione delle Basi di Dati. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 12 / 22
I Server Web Il Server Apache TomCat e le Servlet Una semplice Servlet import java. io. ; import javax. servlet. ; import javax. servlet. http. ; public class HelloWorld extends HttpServlet { public void doget( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { response. setcontenttype ( text/html ); PrintWriter out = response. getwriter (); out. println( <html > ); out. println( <head > ); out. println( <title >Hello World!</ title > ); out. println( </head > ); out. println( <body> ); out. println( <h1>hello World!</h1> ); out. println( </body> ); out. println( </html > ); } } A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 13 / 22
Il Formato XML XML : extensible Markup Language il formato XML è nel modo più assoluto lo standard per la formattazione dei Dati che vengono scambiati attraverso la rete. Definito alla fine degli anni 90, con una sintassi che ricorda quella di HTML. Da HTML, eredita il meccanismo dei Tag. XML è tuttavia un meta-linguaggio: fornisce una serie di regole sintattiche per la definizione di linguaggi più specifici. Non è del tutto sbagliato ridurre il discorso dicendo che un XML non è nient altro che l applicazione della sintassi dei TAG alla formattazione di qualsiasi insieme di dati strutturato. Un formato XML è sempre accompagnato dal suo Document Type Definition (DTD) Il vantaggio di usare l XML è quello di uniformare la struttura dei dati che attraversano la rete e quindi uniformare le tecnologie per gestirli. L XHTML è una versione rivisitata di HTML che rispetta completamente il formalismo e le caratteristiche dei linguaggi XML. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 14 / 22
Il Formato XML XML: un esempio (1/2) Descrivere i dati di una Università <?xml version= 1.0 encoding= UTF-8?> <uni> <docenti> <docente nome= Giovanni cognome= Brambilla > <corso nome= Fondamenti di Chimica I /> <corso nome= Fondamenti di Chimica II /> </docente> <docente nome= Paolo cognome= Rossi > <corso nome= Fondamenti di Fisica III /> <corso nome= Teoria dei Circuiti /> </docente> </docenti> <studenti> <studente nome= Gianni cognome= Verdi /> <studente nome= Paolo cognome= Bianchi /> <studente nome= Sara cognome= Rossi /> </studenti> </uni> A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 15 / 22
Il Formato XML XML: un esempio (2/2) il DTD: definizione del formato <! ELEMENT persona (nome, cognome)> <!DOCTYPE uni [ <!ELEMENT uni (docenti,studenti)> <!ELEMENT docenti (docente)> <!ELEMENT studenti (studente)> <!ELEMENT docente (corso)> <!ATTLIST docente nome CDATA #REQUIRED cognome CDATA #REQUIRED>]> <!ELEMENT corso (#PCDATA) > <!ELEMENT studente> <!ATTLIST studente nome CDATA #REQUIRED cognome CDATA #REQUIRED>]> ]> Nota Attraverso i DTD è possibile realizzare dei tool Automatici per la gestione dei dati XML e riutilizzabili per qualsiasi formato dati rappresentato con XML. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 16 / 22
Il Formato XML XML: il Document Object Model Il DOM è una concetto largamente utilizzato e di supporto ai linguaggi XML. Il DOM è una descrizione ad oggetti degli elementi appartenenti ad un documento. Il DOM è utilizzato tanto per descrivere file HTML che XML, con particolare riferimento alla struttura ramificata (ad albero) che questi documenti hanno. Il DOM è uno standard pensato sia per fornire un modello di documentazione degli elementi di una sintassi XML sia un modello di riferimento per librerie di programmazione che debbano dati formattati in XML. In particolare il DOM è usato nel linguaggio Javascript, che contiene funzionalità standard per l accesso dei dati XML attraverso il DOM. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 17 / 22
Il Formato XML Lo standard XML e i servizi Web Java Java Enterprise Edition La Java Enterprise Edition è un insieme molto vasto di librerie Java frammiste a tool per lo sviluppo di tecnologie Web. Il Server Web OpenSource GlassFish, originariamente sviluppato da Sun Microsystem, è il Server Web di riferimento per queste tecnologie. Caratteristiche principali della piattaforma: Un massiccio insieme di librerie per: Gestire documenti XML e HTML Gestire le sessioni e l accesso alle basi di dati. Procedure standard per il salvataggio di oggetti su file xml, o per la lettura di file xml che contengono informazioni relative ad oggetti. Basate sulla serializzazione e sulla riflessione. Basate su standard per la codifica delle classi. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 18 / 22
Il Formato XML XML e Javascript : la Cosidetta Tecnologia AJAX Il termine AJAX (Asynchronous JavaScript and XML) è un termine di marketing usato negli ultimi anni per indicare una tecnologia che sfrutta i vantaggi combinati del linguaggio Javascript, delle Librerie Javascript che consentono di gestire il DOM, e dei documenti XML. Ajax non è un linguaggio, ma è semplicemente un modo diverso di usare strumenti che erano già disponibili. Tuttavia Ajax cambia significativamente il modo di concepire il Web. L Obiettivo è quello di delegare a Javascript l inserimento all interno di pagine HTML. Javascript modifica il contenuto HTML andando ad interrogare il server. Il Server fornisce i dati a Javascript usando un linguaggio XML (eventualmente l XHTML). Fra tanti, Gmail è uno degli esempi più significativi della tecnologia Ajax. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 19 / 22
Il Formato XML Tecnologia AJAX: comunicazione vecchio stile Client HTML Reload (2) (1) Server Modulo PhP HTML Nuovo (3) Reload (1) Il Client chiede al Server una pagina HTML. (2) Sul Client, l utente interagisce con una pagina cliccando su un pulsante. Questo provoca un ricaricamento dei dati. (3) Il Server risponde con una nuova pagina HTML. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 20 / 22
Il Formato XML Tecnologia AJAX: un nuovo modo di comunicare. HTML (1.3)(2,3) modifica JS onload (1.1) (1) Server Client Reload (2) onclick (1.2),(2,1) (1.2),(2.2) (1.2),(2.2) XML Modulo PhP (1) Il Client chiede al Server una pagina HTML. (1.1)onLoad il modulo Javascript (1.2) chiede un documento XML contenente i dati per modificare il contenuto (1.3) HTML. (2) Sul Client, l utente interagisce con una pagina cliccando su un pulsante. Questo provoca un ricaricamento dei dati, e si ripete il processo già avvenuto al punto (1). Con AJAX, i contenuti grafici, il testo HTML, gli stili CSS e gli script Javascript vengono caricati all inizio una volta per tutte. Le informazioni cambiano e si aggiornano in modo dinamico senza provocare un reload della pagina. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 21 / 22
Il Formato XML Il Web oggi Javascript ed AJAX La flessibilità introdotta dalla tecnologia Javascript e dal metodo AJAX consente una alterazione flessibile dei contenuti HTML senza doversi adattare a continui reload. Queste soluzioni hanno tra l altro il vantaggio di alleggerire i servizi Web. JSON La JavaScript Object Notation è talvolta usata come alternativa ad XML nelle architetture AJAX. Essa è la rappresentazione testuale di un DOM Javascript. Web 2.0 Col termine Web 2.0 si indica solitamente la diffusione di una serie di servizi, applicazioni e tecnologie messe a disposizione in rete, e che rendono più semplice lo sviluppo di pagine Web. Tra questi troviamo blog, forum, wiki, mail systems etc. HTML 5 HTML5 è l ultima versione di HTML. HTML prevede tra le altre cose la definitiva integrazione di Javascript come parte di HTML ed una separazione più marcata tra contenuti di stile e struttura dei documenti. A. Martinelli Architetture Web I Server Web e gli Standard della Comunicazione 01/04/2015 22 / 22