SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Destaque

04 B Progettazione Logica E S
04 B  Progettazione Logica  E S04 B  Progettazione Logica  E S
04 B Progettazione Logica E Sguestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M Lguestbe916c
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logicaguestbe916c
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzioneguestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controlloguestbe916c
 
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para ComerF Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comerkolelmelilla
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M Sguestbe916c
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generaliguestbe916c
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Datiguestbe916c
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M Sguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
gta4-jeu
gta4-jeugta4-jeu
gta4-jeugtajeu
 

Destaque (20)

04 B Progettazione Logica E S
04 B  Progettazione Logica  E S04 B  Progettazione Logica  E S
04 B Progettazione Logica E S
 
S Q L
S Q LS Q L
S Q L
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q L
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzione
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para ComerF Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
 
Verduras
VerdurasVerduras
Verduras
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
PEREK SHIRA
PEREK SHIRAPEREK SHIRA
PEREK SHIRA
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generali
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Dati
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M S
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
gta4-jeu
gta4-jeugta4-jeu
gta4-jeu
 
Halal Pboro
Halal PboroHalal Pboro
Halal Pboro
 

Semelhante a Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftFrancesco Fullone
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Fulvio Corno
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeomarcocasario
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Zend Server
Zend ServerZend Server
Zend ServerGrUSP
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea Dottor
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Andrea Dottor
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksNicolò Carandini
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 

Semelhante a Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server (20)

Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
 
Pietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma MicrosoftPietro Brambati: PHP e la piattaforma Microsoft
Pietro Brambati: PHP e la piattaforma Microsoft
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
 
Net core base
Net core baseNet core base
Net core base
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
Web dynpro for abap 01
Web dynpro for abap 01Web dynpro for abap 01
Web dynpro for abap 01
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Linuxday2013
Linuxday2013 Linuxday2013
Linuxday2013
 
Zend Server
Zend ServerZend Server
Zend Server
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework Benchmarks
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 

Mais de guestbe916c

Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioniguestbe916c
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logicaguestbe916c
 
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q Lguestbe916c
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logicaguestbe916c
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazioneguestbe916c
 

Mais de guestbe916c (15)

Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Algebra
AlgebraAlgebra
Algebra
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logica
 
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazione
 

Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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