Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server - Presentation Transcript

    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 “Hello\\n”; – 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=\"risposta.php\" method=\"post\"> Nome:<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"30\"> Indirizzo email:<input type=\"text\" name=\"email\" size=\"20\" maxlength=\"30\"> Mi interessa:<select name=\"preference\"> <option value=“ASP”>ASP</option> <option value=“PHP”>PHP</option> <option value=“JSP”>JSP</option></select> <input type=\"submit\" value=\"Invia\"></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 (\"Invieremo le informazioni su $pref a $posta\"); ?> </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(\"name\") posta= Request.form(\"email\") pref= Request.form(\"preference\") %> </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=\"c#\" Codebehind=\"risposta.aspx.cs\" %> <HTML><HEAD><title>Calcoli numerici</title></HEAD> <body> <h2>Risultati relativi ai numeri inseriti</h2> <table border=\"1\"> <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(\"N11\")); … /* 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

    + guestbe916cguestbe916c, 2 years ago

    custom

    373 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 373
      • 373 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 12
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories