Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

13

Click here to load reader

Transcript of Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server

Page 1: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

1

A.A. 2005/2006 Basi di Dati e Laboratorio 1

Corso di Basi di Dati e Laboratorio

La programmazione WebAlfio Ferrara - Stefano Montanelli

A.A. 2005/2006 Basi di Dati e Laboratorio 2

Architettura del Web

ClientHTTP Server

DBMS Server

Interprete del linguaggio di

scripting(ASP, PHP, …)

La pagina contiene script lato server?

Gli script richiedono connessioni al DBMS?

Richiesta HTTP

NO

NOSì

A.A. 2005/2006 Basi di Dati e Laboratorio 3

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

Page 2: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

2

A.A. 2005/2006 Basi di Dati e Laboratorio 4

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 5

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-BINes. http://nomehost/cgi-bin/abc.exe

A.A. 2005/2006 Basi di Dati e Laboratorio 6

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

Page 3: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

3

A.A. 2005/2006 Basi di Dati e Laboratorio 7

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 8

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 9

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

Page 4: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

4

A.A. 2005/2006 Basi di Dati e Laboratorio 10

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 11

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 12

Server Side – Perl

• Esempio– Inserire nel file Hello.pl il seguente codice#!/usr/local/bin/perlprint “Hello\n”;

– Mandare lo script in esecuzione con il seguente comandoperl Hello.pl

Page 5: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

5

A.A. 2005/2006 Basi di Dati e Laboratorio 13

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 14

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 15

Server Side – PHP

Page 6: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

6

A.A. 2005/2006 Basi di Dati e Laboratorio 16

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 17

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 18

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)

Page 7: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

7

A.A. 2005/2006 Basi di Dati e Laboratorio 19

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 ObjectModel)

– 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 20

Server Side – ASP

ActiveX ServerComponents

HTML +VBScript/JScript

A.A. 2005/2006 Basi di Dati e Laboratorio 21

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>

Page 8: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

8

A.A. 2005/2006 Basi di Dati e Laboratorio 22

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 23

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 24

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

Page 9: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

9

A.A. 2005/2006 Basi di Dati e Laboratorio 25

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 26

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 27

Server Side – .NET

Win 32

VB.NET C# J# VC++.NET …

Common Language Runtime

.NET Framework class library

Windows Forms

Web Forms XML WebServices

ASP.NET

Page 10: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

10

A.A. 2005/2006 Basi di Dati e Laboratorio 28

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 29

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 30

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 */

}}}

Page 11: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

11

A.A. 2005/2006 Basi di Dati e Laboratorio 31

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 32

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 33

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

Page 12: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

12

A.A. 2005/2006 Basi di Dati e Laboratorio 34

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 35

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 36

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

Page 13: Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server

13

A.A. 2005/2006 Basi di Dati e Laboratorio 37

Server Side – JSP

Web client

HTTPServletRequest

Web Server

HTTPServletResponse

Web components(servlet)

JavaBeans components

HTTPRequest.JSP page

HTTPResponse.HTML page

1

6

2

5

3

4JDBC

A.A. 2005/2006 Basi di Dati e Laboratorio 38

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 39

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