Corso di Basi di Dati e Laboratorio




   La programmazione Web
              Alfio Ferrara - Stefano Montanelli




 A.A...
Server Side – CGI

• CGI (Common Gateway Interface) è una
  tecnica per realizzare processing lato
  server
   – NON è un ...
Server Side – CGI
   – Il server manda in esecuzione l’applicazione
     richiesta
         • L’applicazione interagisce c...
Server Side – Fast CGI

• Considerazioni
   – La generazione dei processi avviene solo in
     fase di inizializzazione
  ...
Server Side – Perl

• Modalità di esecuzione
   – L’interprete comunica con il Web server
     tramite CGI
         • Scri...
Server Side – PHP

• Esempio richiesta con form
  <html><body>
   <h2>Desidera ulteriori informazioni sui temi del
     no...
Server Side – ASP

• Caratteristiche di ASP
   – Tecnologia proprietaria Microsoft
         • Soluzione server side maggio...
Server Side – ASP

• Considerazioni
   – Soluzione proprietaria dipendente dalla
     piattaforma Windows
   – Ottimizzato...
Server Side – .NET

• Caratteristiche di .NET
   – .NET è un’infrastruttura per lo sviluppo di
     soluzioni integrate ad...
Server Side – .NET

• Esempio
   – Date tre coppie di numeri interi, la pagina
     ASPX restituisce il massimo e la media...
Server Side – .NET

• Considerazioni
   – E’ suggerito l’uso di code-behind
         • Separazione fra HTML e codice dinam...
Server Side – JSP

• Caratteristiche di JSP
   – Integrazione in pagine HTML di codice Java
     eseguito lato server
   –...
Server Side – JSP
                                                      Web Server
                    HTTP
              ...
Upcoming SlideShare
Loading in …5
×

Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

1,050 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,050
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
42
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

  1. 1. Corso di Basi di Dati e Laboratorio La programmazione Web Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Architettura del Web Richiesta HTTP HTTP Server Client La pagina contiene script NO lato server? NO Gli script richiedono Sì Sì connessioni al DBMS? Interprete del linguaggio di scripting (ASP, PHP, …) DBMS Server A.A. 2005/2006 Basi di Dati e Laboratorio 2 Programmazione lato server • Strumenti – Pagine server: si tratta di script associati a pagine Web, spesso embedded, che vengono interpretati da appositi moduli del server quando la pagina viene richiesta. • ASP, JSP, PHP, Perl, … – CGI: consente di interfacciarsi con un’applicazione eseguita o compilata sul server • Perl, Python, VB, C, … – .NET: applicazione compilata sul server ed eseguita tramite processi dedicati A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  2. 2. Server Side – CGI • CGI (Common Gateway Interface) è una tecnica per realizzare processing lato server – NON è un linguaggio di programmazione – NON è un protocollo di comunicazione • Definisce un ambiente di esecuzione per i programmi lato server A.A. 2005/2006 Basi di Dati e Laboratorio 4 Server Side – CGI • Invocazione – Il client invia una richiesta indicando nella URL il nome del programma da invocare e specificando i parametri necessari all’esecuzione • I parametri vengono passati con metodo GET/POST • Il programma risiede in una posizione precisa del file system del server: la directory CGI-BIN es. http://nomehost/cgi-bin/abc.exe A.A. 2005/2006 Basi di Dati e Laboratorio 5 Server Side – CGI • Esecuzione – Il server individua tramite la richiesta il programma da mandare in esecuzione – Il server decodifica i parametri associati alla richiesta e predispone l’ambiente di esecuzione • es. request_method, query_string, content_length, content_type A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  3. 3. Server Side – CGI – Il server manda in esecuzione l’applicazione richiesta • L’applicazione interagisce con le sorgenti dati (basi di dati) – L’applicazione stampa i risultati sullo standard output • Il risultato è HTML – Il server ridireziona lo standard output verso il client A.A. 2005/2006 Basi di Dati e Laboratorio 7 Server Side – CGI • Considerazioni – Conserva la natura stateless di HTTP • Nessuna forma di persistenza – Ogni richiesta genera un nuovo processo • Basse performance, congestione del server – Eventuali interazioni con i DBMS richiedono una connessione dedicata per ogni richiesta • Congestione del DBMS – Sicurezza • Nelle prime versioni i programmi CGI permettevano l’accesso arbitrario al file system del server A.A. 2005/2006 Basi di Dati e Laboratorio 8 Server Side – Fast CGI • Evoluzione di CGI – Il Web server genera il processo fast-cgi in fase di inizializzazione – Il processo esegue una routine di inizializzazione e si pone in attesa – Ad ogni richiesta, il Web server apre una connessione verso il processo fast-cgi – Il processo genera l’output sulla connessione HTTP aperta verso il client – Il processo fast-cgi chiude la connessione e rimane in attesa di nuove invocazioni A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  4. 4. Server Side – Fast CGI • Considerazioni – La generazione dei processi avviene solo in fase di inizializzazione • Miglioramento delle prestazioni – La persistenza del processo fast-cgi e la connessione con il client consente di superare la natura stateless di HTTP A.A. 2005/2006 Basi di Dati e Laboratorio 10 Server Side – Perl • Caratteristiche di Perl – Nato nel 1986 (prima del Web!) – Linguaggio di scripting orientato alla manipolazione di stringhe – Distribuito in modo free sotto licenza GNU – Si interfaccia ai principali DBMS tramite • DBI: libreria di funzioni indipendenti dal DBMS • DBD: driver specifici per alcuni DBMS A.A. 2005/2006 Basi di Dati e Laboratorio 11 Server Side – Perl • Esempio – Inserire nel file Hello.pl il seguente codice #!/usr/local/bin/perl print “Hellon”; – Mandare lo script in esecuzione con il seguente comando perl Hello.pl A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  5. 5. Server Side – Perl • Modalità di esecuzione – L’interprete comunica con il Web server tramite CGI • Script perl memorizzati nella directory CGI-BIN del server – L’interprete Perl viene integrato come modulo dinamico del Web server sfruttando API specifiche • Nel caso di Apache, il Web server viene integrato con mod_perl A.A. 2005/2006 Basi di Dati e Laboratorio 13 Server Side – PHP • Caratteristiche di PHP – Linguaggio open source distribuito con licenza GPL – Codice embedded nelle pagine HTML – Sintassi simile a C e Perl – Ampio supporto alle interazioni con i DBMS – Supporto alle sessioni HTTP (dalla versione 4) – Nato come CGI, poi disponibile come modulo di Apache (mod_php), oggi anche come dll di altri Web server A.A. 2005/2006 Basi di Dati e Laboratorio 14 Server Side – PHP A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  6. 6. Server Side – PHP • Esempio richiesta con form <html><body> <h2>Desidera ulteriori informazioni sui temi del nostro corso?</h2> <form action=quot;risposta.phpquot; method=quot;postquot;> Nome:<input type=quot;textquot; name=quot;namequot; size=quot;20quot; maxlength=quot;30quot;> Indirizzo email:<input type=quot;textquot; name=quot;emailquot; size=quot;20quot; maxlength=quot;30quot;> Mi interessa:<select name=quot;preferencequot;> <option value=“ASP”>ASP</option> <option value=“PHP”>PHP</option> <option value=“JSP”>JSP</option></select> <input type=quot;submitquot; value=quot;Inviaquot;></form> </body></html> A.A. 2005/2006 Basi di Dati e Laboratorio 16 Server Side – PHP • Esempio di risposta <html><head> <?php $nome=$_POST['name']; $posta=$_POST['email']; $pref=$_POST['preference']; ?> </head><body> <h2>Grazie per l'interesse <?php print $nome ?></h2> <div> <?php print (quot;Invieremo le informazioni su $pref a $postaquot;); ?> </div> </body></html> A.A. 2005/2006 Basi di Dati e Laboratorio 17 Server Side – PHP • Considerazioni – Linguaggio semplice ed efficiente – Mancanza di un ambiente di sviluppo completo – Mancanza di un’interfaccia uniforme verso i DBMS – Mancanza di supporto diretto a tecniche di clustering e failover • Linguaggio inadatto ad applicazioni Web complesse ed estese – Evoluzione verso la programmazione ad oggetti (dalla versione 5) A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  7. 7. Server Side – ASP • Caratteristiche di ASP – Tecnologia proprietaria Microsoft • Soluzione server side maggiormente diffusa in ambiente Microsoft – Accesso alle API Windows tramite il supporto dello standard COM (Component Object Model) – Impiego di ADO (Active Data Objects) COM per le interazioni con i DBMS – Vantaggi di performance rispetto a CGI • Gli interpreti VBScript e Jscript sono integrati nel Web server IIS A.A. 2005/2006 Basi di Dati e Laboratorio 19 Server Side – ASP HTML + VBScript/JScript ActiveX Server Components A.A. 2005/2006 Basi di Dati e Laboratorio 20 Server Side – ASP • Esempio – Analizziamo lo stesso esempio visto per PHP <html> <head> <% nome= Request.form(quot;namequot;) posta= Request.form(quot;emailquot;) pref= Request.form(quot;preferencequot;) %> </head><body> <h2>Grazie per l'interesse <% =nome %></h2> <div> Invieremo le informazioni su <% =pref %> a <% =posta %> </div></body></html> A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  8. 8. Server Side – ASP • Considerazioni – Soluzione proprietaria dipendente dalla piattaforma Windows – Ottimizzato in ambiente Microsoft – Limiti di sicurezza degli oggetti ActiveX – Poca scalabilità – ASP è stato evoluto con ASP+ • Supporto di codice compilato • Caching • Multi-server • Multi-processor A.A. 2005/2006 Basi di Dati e Laboratorio 22 Confronto PHP ASP • PHP nasce prima di ASP • Uguale espressività – I due offrono sostanzialmente le medesime azioni – Esistono convertitori automatici da ASP a PHP e viceversa • Differente sintassi – PHP è simile al C – ASP discende dal Basic (VBScript) A.A. 2005/2006 Basi di Dati e Laboratorio 23 Confronto PHP ASP • ASP è rigorosamente basato sul modello ad oggetti – PHP lo è dalla versione 5 • PHP è disponibile su tutte le piattaforme ed è integrabile con un gran numero di DBMS • Lo sviluppo ASP può essere assistito tramite Frontpage o altri strumenti visuali A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  9. 9. Server Side – .NET • Caratteristiche di .NET – .NET è un’infrastruttura per lo sviluppo di soluzioni integrate adeguate a qualsiasi gruppo di risorse Web – Comprende 4 linguaggi conformi alle CLS (Common Language Specification) di ECMA riguardo all’interoperabilità • Visual C# .NET (standard ECMA dal 2001) • Visual C++ .NET • Visual Basic .NET • Visual J# .NET A.A. 2005/2006 Basi di Dati e Laboratorio 25 Server Side – .NET • Esecuzione – Il codice (scritto in uno dei linguaggi di .NET) viene compilato in un linguaggio intermedio • MSIL (Microsoft Intermediate Language) – All’invocazione della pagina MSIL viene eseguito all’interno del CLR (Common Language Runtime) tramite processi specifici • ASP.NET A.A. 2005/2006 Basi di Dati e Laboratorio 26 Server Side – .NET VB.NET C# J# VC++.NET … XML Web Web Forms Services Windows Forms ASP.NET .NET Framework class library Common Language Runtime Win 32 A.A. 2005/2006 Basi di Dati e Laboratorio 27 9
  10. 10. Server Side – .NET • Esempio – Date tre coppie di numeri interi, la pagina ASPX restituisce il massimo e la media per ogni coppia A.A. 2005/2006 Basi di Dati e Laboratorio 28 Server Side – .NET • risposta.aspx <%@ Page language=quot;c#quot; Codebehind=quot;risposta.aspx.csquot; %> <HTML><HEAD><title>Calcoli numerici</title></HEAD> <body> <h2>Risultati relativi ai numeri inseriti</h2> <table border=quot;1quot;> <tr><td><b>Primo numero</b></td> <td><b>Secondo numero</b></td> <td><b>Massimo</b></td> <td><b>Media aritmetica</b></td></tr> <tr><td><% =N11 %></td><td><% =N12 %></td> <td><% =MAX1 %></td><td><% =MA1 %></td></tr> … </table> </body></HTML> A.A. 2005/2006 Basi di Dati e Laboratorio 29 Server Side – .NET • risposta.aspx.cs using System; using … /*inclusione delle librerie necessarie*/ namespace test {public class risposta : System.Web.UI.Page {protected decimal N11,N12,N21,N22,N31,N32, MAX1,MAX2,MAX3,MA1,MA2,MA3; private void Page_Load(object sender, System.EventArgs e) { N11 = System.Convert.ToDecimal (Request.Form.Get(quot;N11quot;)); … /* acquisizione dei parametri */ if (N11 > N12) MAX1 = N11; else MAX1 = N12; … /* test di controllo */ MA1 = (N11 + N12)/2; … /* calcolo delle medie aritmetiche */ }}} A.A. 2005/2006 Basi di Dati e Laboratorio 30 10
  11. 11. Server Side – .NET • Considerazioni – E’ suggerito l’uso di code-behind • Separazione fra HTML e codice dinamico – La migrazione da ASP a ASP.NET non è banale • In ambiente .NET gli oggetti COM sono stati ristrutturati • Impossibilità di condividere informazioni di stato A.A. 2005/2006 Basi di Dati e Laboratorio 31 Server Side – JSP • Java Servlet – Analogo server-side delle applet • Sono programmi Java compilati – Specializzano GenericServlet o HTTPServlet e contengono 3 metodi principali • init() inizializzazione (variabili, connessioni, …) • service() gestione delle richieste del client • destroy() deallocazione delle risorse – Richiamabili all’interno di HTML • <form action=http://nomehost/servlet/nomeserv > – Richiamabili direttamente da URL • http://nomehost/servlet/nomeserv A.A. 2005/2006 Basi di Dati e Laboratorio 32 Server Side – JSP • Servlet engines – Processi dedicati all’esecuzione di servlet – Disponibili come moduli da integrare al Web server • Es. Apache + mod_jserv – Offrono integrazione con i DBMS tramite JDBC – Ottimizzano l’esecuzione delle servlet • La servlet viene caricata alla prima invocazione e rimane attiva gestendo molte richieste client A.A. 2005/2006 Basi di Dati e Laboratorio 33 11
  12. 12. Server Side – JSP • Caratteristiche di JSP – Integrazione in pagine HTML di codice Java eseguito lato server – Separazione della parte dinamica dal template statico HTML • Il codice JSP va incluso in tag speciali delimitati da <%…%> – L’invocazione di una pagina JSP implica l’esecuzione di una servlet • La servlet deve essere inizializzata alla prima invocazione (init()) • La servlet viene solo richiamata se già attiva per precedenti invocazioni (service()) A.A. 2005/2006 Basi di Dati e Laboratorio 34 Server Side – JSP • Esecuzione – Il client invia una richiesta HTTP al Web server – Il Web server converte la richiesta in un oggetto HTTPServletRequest per il componente Web (una servlet) che tratterà la richiesta – Il componente Web interagisce con i componenti JavaBeans e con i DBMS per generare contenuti dinamici A.A. 2005/2006 Basi di Dati e Laboratorio 35 Server Side – JSP – La richiesta può essere passata ad altri componenti Web per ulteriori elaborazioni – Il componente Web genera un oggetto HTTPServletResponse – L’oggetto HTTPServletResponse viene convertito in una risposta HTTP e viene restituita al client A.A. 2005/2006 Basi di Dati e Laboratorio 36 12
  13. 13. Server Side – JSP Web Server HTTP Request. Web components HTTPServlet (servlet) JSP page 2 Request Web 1 client 6 5 HTTPServlet HTTP Response 3 Response. HTML page JavaBeans components JDBC 4 A.A. 2005/2006 Basi di Dati e Laboratorio 37 Server Side – JSP • Un JSP engine: Tomcat – Prodotto del progetto Jakarta di Apache Software Foundation sponsorizzato da Sun – Implementazione di riferimento per le tecnologie Java Servlet e JSP • Essenzialmente è un servlet engine con un ambiente JSP – Integrato con Apache tramite mod_jk (evoluzione di mod_jserv), ma disponibile anche per altri Web server (IIS) A.A. 2005/2006 Basi di Dati e Laboratorio 38 Server Side – JSP • Considerazioni su JSP – Acquisisce i pregi di Java • Portabilità su più piattaforme • Accessibilità di tutte le API Java • Integrabilità in architetture complesse – Meno efficiente di PHP e ASP • Conveniente in soluzioni complesse – Richiede notevoli competenze tecniche • Conoscenze delle tecnologie e del linguaggio Java A.A. 2005/2006 Basi di Dati e Laboratorio 39 13

×