1 Introduzione
sia per il programmatore che per il designer (colui che si preoccupa essenzialmente della parte
grafica di un sito web) e quindi sulle conoscenze necessarie per il loro utilizzo. Infine si sono
valutate le loro prestazioni in termini di scalabilità e velocità di esecuzione con dei test mirati.
Obiettivo finale del lavoro è quello di acquisire una buona conoscenza sulla programmazione
web, in particolar modo sull'utilizzo dei template nello sviluppo di applicazioni web sia per
quanto concerne il PHP che il Java.
1.3) Piano di lavoro
Per affrontare tale tema, inizialmente si sono esaminate le varie modalità di programmazione
web: si sono passate in rassegna le varie tecniche presenti oggi sul mercato, dalla
programmazione lato client alla programmazione lato server, delineando per ogni tecnica le
caratteristiche fondamentali e gli ambiti di utilizzo. Si è quindi approfondito lo studio dei
linguaggi serverside PHP e Java (JSP e Servlet) e per ognuno si sono fatte prove pratiche per
capirne meglio le caratteristiche e le modalità di funzionamento. In entrambi i casi si sono
sviluppate anche semplici applicazioni di prova per la connessione, l'interrogazione e la
popolazione di database. Come DBMS (Data Base Management System) si è utilizzato il
database relazionaleMySQL versione 4.0.15.
Successivamente si è introdotto il concetto di template e si sono esposte le sue caratteristiche
principali, modalità di funzionamento e finalità d'uso. Si sono poi cercate in rete le soluzioni
di template ad oggi esistenti e maggiormente utilizzate, e di esse si è studiata la
documentazione relativa; per ogni soluzione presa in considerazione sono state fatte delle
prove pratiche: ogni template esaminato è stato usato per costruire la stessa semplice pagina
html, per avere un'idea più chiara di come esso funzioni e della sua facilità d'uso. Infine si è
sottoposta ogni pagina ad appositi benchmark per valutarne la velocità di risposta e la
scalabilità della soluzione. Da questa analisi si sono evidenziate le diverse caratteristiche e
prestazioni delle soluzioni viste, confrontandole fra loro. Infine si sono tratte le conclusioni
sui vantaggi apportati dal meccanismo del template nella programmazione web.
L'analisi ha portato ad identificare due soluzioni “preferite” per un esperimento più
consistente che ha riguardato una applicazione web dedicata al commercio elettronico. Con
questo esperimento si è cercato di analizzare ulteriormente il funzionamento e l'utilità del
8
1 Introduzione
meccanismo analizzato.
9
2 L'evoluzione dei servizi web
2 L'evoluzione dei servizi web
2.1) Cosa si intende per “web”
Web o WWW (World Wide Web) [2] identifica un particolare "servizio" disponibile sulla rete
Internet, cioè la consultazione, tramite il protocollo HTTP, di documenti di vario genere
pubblicati da organizzazioni e/o privati. E' un particolare modo di rendere disponibili
informazioni appoggiandosi alla rete Internet. Questo servizio, e in particolare la modalità di
accesso grafica ed ipertestuale con la quale spesso si presenta agli utenti, ha consentito
l'utilizzo della rete anche a persone prive di particolari conoscenze nel campo dell'informatica.
La rete si è gradualmente trasformata da strumento per addetti ai lavori a servizio quasi
pubblico, e non si può negare che il vero successo di Internet, avvenuto per lo più negli ultimi
anni, sia legato proprio alla nascita del Web.
A conferma di tutto questo c'è il fatto che chi si collega oggi ad Internet, in particolare chi non
è un addetto ai lavori, difficilmente conosce la differenza che c'è tra World Wide Web e
Internet. In molti casi (e soprattutto negli ultimi tempi) il Web ed Internet sono stati molto
confusi al punto tale che talvolta si usa il termine Internet per intendere esclusivamente il
servizio Web.
Il World Wide Web nasce nel 1989 a Ginevra, e precisamente presso il CERN, uno fra i più
importanti laboratori di Fisica in Europa. Gli ideatori sono Tim Berners e Robert Cailliau, i
quali partirono dal principio che lo scambio di informazioni in rete doveva essere semplice,
intuitivo e veloce, per consentire ai ricercatori di tutto il mondo di comunicare e cooperare
con facilità ed efficienza. In questo progetto lo sviluppo tecnologico delle reti di
telecomunicazioni ha svolto un ruolo molto importante, consentendo ai tradizionali documenti
di viaggiare in rete a velocità sempre maggiori. Alla base del Web ci sono due standard
fondamentali che sono l'HTML e l'HTTP.
HTML significa Hyper Text Markup Language, è un linguaggio vero e proprio con le sue
regole grammaticali e sintattiche: questo insieme di regole stabilisce come si devono
realizzare e interpretare i documenti ipertestuali. Questi documenti possono essere collegati
10
2 L'evoluzione dei servizi web
tra loro con opportuni riferimenti, non necessariamente reciproci, ed arricchiti di immagini,
testi, suoni, o altre risorse multimediali, creando quelle che in gergo si chiamano Pagine Web
o HTML.
Il secondo standard che sta alla base del World Wide Web è l'HTTP che significa Hyper Text
Transfer Protocol, vale a dire il protocollo che stabilisce le regole per il trasferimento in rete
dei documenti ipertestuali.
2.2) L'evoluzione storica
Dal punto di vista storico è interessante notare che il World Wide Web non è nato come
ambiente per l'esecuzione di applicazioni mentre oggi le applicazioni svolgono un ruolo
dominante tra i servizi forniti via web: il web sta giocando un ruolo sempre crescente per lo
scambio di beni , servizi ed informazioni.
Una soluzione web di oggi è frutto dell’evoluzione impressionante che internet e le tecnologie
collegate hanno avuto in questi ultimi anni. Inizialmente i server web distribuivano contenuto
statico, come pagine HTML con poca grafica e suoni. I modem erano poco veloci, e per
permettere un accesso veloce alle informazioni i siti si presentavano spesso molto leggeri,
composti essenzialmente da solo testo e poca grafica. L'esigenza di abbinare alla enorme
diffusione di contenuti la possibilità di poterli gestire, elaborare, visualizzare a proprio
piacimento è stata fin da subito sentita e richiesta sia dagli addetti ai lavori che dagli utenti
stessi. La pagina web oggi è ormai diventata un contenitore di varie tecnologie.
Progressivamente le icone, i colori, le immagini e perfino le animazioni e i suoni sono
diventati elementi essenziali di una pagina web: oggi il design e la programmazione giocano
un ruolo fondamentale e permettono al visitatore del sito web di poter sfruttare infinite
soluzioni per poter trattare i contenuti del sito stesso. L'importanza sempre crescente del web
ha portato alla nascita di vere e proprie applicazioni web che hanno in molti casi soppiantato
le applicazioni clientserver tradizionali e ha dato il via allo sviluppo di veri e propri linguaggi
di programmazione per il web che hanno sostituito la precedente concezione del sito web
statico. Negli ultimi anni le tecnologie Web hanno creato nuove opportunità per il
consolidamento su scala globale delle aziende, attraverso la creazione di canali di relazione
con i clienti. Oggi possedere e utilizzare le “tecnologie web” è una necessità alla quale tutti si
11
2 L'evoluzione dei servizi web
stanno adeguando. In particolare i fornitori di software stanno adeguando i loro prodotti,
aggiungendo funzionalità sempre più web oriented, quali, per esempio, la possibilità di venir
eseguiti tramite una pagina web o di avere qualche estensione atta a interagire con i servizi
offerti dal web. Questo fenomeno ha contribuito enormemente allo sviluppo e al continuo
cambiamento delle tecnologie per il web.
Non bisogna, tuttavia, tralasciare le problematiche connesse all'enorme espansione dei servizi
web; in particolare i problemi di sicurezza delle informazioni e di privacy sono in primo
piano. Per questo anche le soluzioni inerenti la sicurezza in ambiente web (e non solo) hanno
subito in questi anni un processo evolutivo che va di pari passo con l'evoluzione dei servizi
web stessi.
12
3 Applicazioni web
3 Applicazioni web
3.1) Definizione
Un applicazione web è un programma la cui invocazione da parte dell'utente avviene
interagendo tramite il protocollo http con un server web. In certi casi si presenta come un
estensione di un sito web che permette ad un utente di invocare la logica di un applicazione e
conseguentemente influenzare lo stato (dell'applicazione) sul server (negozi virtuali, webmail,
discussion forum) o come un estensione di un applicazione clientserver in cui il browser
sostituisce il client da installare come frontend dell'applicazione. Le applicazioni Web si
pongono come valida alternativa alle applicazioni Client/Server di tipo tradizionale: a
differenza di quest'ultime, oltre ad appoggiarsi al protocollo http, non sono legate ad un
applicativo da installare su ogni client che vuole utilizzare l'applicazione clientserver ma
sfruttano il browser che tutti possono facilmente avere. Per questi motivi esse presentano
rispetto alle applicazioni tradizionali una facilità di distribuzione e aggiornamento non
trascurabile, nonché l'accesso multipiattaforma e la conseguente riduzione dei costi di
gestione.
3.2) Architettura delle applicazioni web
La stratificazione logica di un applicazione secondo il modello a livelli fa in modo che ogni
livello offra servizi al livello superiore e nasconda i servizi del livello inferiore. Le entità di
livelli diversi dovrebbero essere distinguibili nel codice sorgente (in file separati o in sezioni
separate di un file) per permettere una più chiara divisione del lavoro e la possibilità di
mettere mano indipendentemente alle diverse entità. Un'applicazione Web, nella maggior
parte dei casi, si sviluppa su tre livelli logicofunzionali (applicazioni ThreeTier), ma può
essere distribuita anche su più livelli (applicazioni MultiTier).
I tre livelli sono:
13
3 Applicazioni web
• Presentation:
è il livello di presentazione che rappresenta l'interfaccia utente dell'applicazione e si occupa di
acquisire dati e visualizzare risultati; esso è costituito da vari componenti combinati tra loro:
browser, documenti HTML, applet Java, controlli ActiveX, javascript. La capacità di utilizzo
di questi elementi da parte della piattaforma client è uno dei problemi principali nella
realizzazione di questo livello.
• Business logic:
è il livello intermedio, contiene le logiche applicative di elaborazione dati; si occupa delle
elaborazioni dei dati in base alla cosiddetta busines logic, cioè all'insieme delle regole per cui
i dati sono considerati significativi e le loro relazioni consistenti. Le elaborazioni del livello
intermedio generano i risultati richiesti dall'utente. Le modalità di realizzazione del livello
intermedio dipendono spesso dalle caratteristiche e dalle tecnologie supportate dal server Web
e/o da componenti installati sul server applicativo. Il livello intermedio di un'applicazione
Web può essere costituito da un insieme di script, componenti e programmi interagenti tra di
loro e con il server Web tramite le tecnologie serverside che verranno trattate nel capitolo 4.
• Data layer:
è il livello dati, che concerne con l'integrità e l'accesso ai dati; rappresenta l'insieme dei servizi
offerti da applicazioni indipendenti dal Web, come ad esempio un gestore di database
(DBMS), un sistema di gestione di posta elettronica, etc. In genere è opportuno prevedere dei
componenti dell'architettura dell'applicazione che fungono da connettori tra il livello
intermedio e il livello dati. Infatti, utilizzando dei connettori per l'interazione con applicazioni
esterne non standard si facilita la manutenibilità nel caso in cui queste vengano modificate o
sostituite (es. ODBC, OLEDB).
14
3 Applicazioni web
Non sempre i livelli logici di un'applicazione Web corrispondono a locazioni fisiche sulla rete.
Si va dal caso in cui tutti e tre i livelli risiedono sulla stessa macchina fino alla corrispondenza
di ciascun livello con una macchina fisica.
Una architettura a tre livelli porta numerosi vantaggi: offre un' interfaccia utente soddisfacente
ma semplice da realizzare e grazie ad essa è possibile confezionare più applicazioni di
interfaccia. Ad esempio si può implementare un client ricco di logiche di Presentation per
l'utilizzo da rete locale, che il browser potrà eseguire più velocemente, o un client più sottile
per l'utilizzo da Internet, in cui il client dovrà effettuare poche operazioni compensando così il
probabile ritardo introdotto dall'accesso a Internet. Un'architettura tale inoltre incapsula la
maggior parte delle logiche applicative nel Middle Tier (business logic); le uniche logiche
demandate al DBMS sono tipicamente quelle di integrità referenziale. I diversi livelli su cui è
costruita l'applicazione permettono di realizzare applicazioni distribuite e scalabili e offrono
una maggior manutenibilità grazie all'isolamento delle componenti. Tutto questo ovviamente
a fronte di una maggior complessità architetturale e implementativa.
Se la divisione fra DBMS (Data layer) e Business logic è abbastanza netta e non è un
problema grazie anche agli appositi connettori costruiti proprio per questo fine, quella fra
Presentation e Business logic invece non è ancora molto ben definita e chi si occupa dell'una
spesso si trova a dover preoccuparsi anche dell'altra. La logica e presentazione sono concetti
ortogonali, ma non è sempre così, in realtà hanno entrambi una dipendenza verso
l'informazione, la logica produce l'informazione che deve essere resa fruibile dalla
presentazione.
15
Figura 3.1 Architettura threetier
3 Applicazioni web
Per minimizzare lo sforzo d'implementazione del sistema, spesso si è tentati di utilizzare
direttamente l'informazione prodotta dal livello business logic durante la creazione della
presentazione, creando una fortissima dipendenza fra le due.
Il template (capitolo 7) è un meccanismo che cerca di rendere sempre più netta la divisione fra
le due ed è un meccanismo supportato dalla maggior parte dei linguaggi di programmazione
web serverside.
3.3) Vantaggi e svantaggi delle applicazioni web
Sono numerosi i vantaggi che caratterizzano le applicazioni web, che ne hanno favorito la
diffusione e che le hanno fatte preferire rispetto ad altri tipi di applicazioni come quelle client
server tradizionali. Vi sono comunque due aspetti principali:
1. Nessun software da installare nel proprio PC da parte di chi vuole usare l'applicazione
Questa enorme possibilità offerta sta facendo dirottare verso le applicazioni web tutti i
progetti, che potevano essere implementati secondo altre tecnologie clientserver. La
comodità di poter venir utilizzate da chiunque, senza la necessità di installare sui vari client
programmi appositi e conseguentemente doverli mantenere e aggiornare è la causa
predominante del successo delle applicazioni web. Tutto può essere gestito sul server evitando
problemi di distribuzione e manutenzione di software in posti diversi e lontani, con un
notevole risparmio di tempo e denaro.
16
Figura 3.2 Relazione fra logica, presentazione e dati
3 Applicazioni web
2. Possibilità di utilizzare il software da qualsiasi punto della rete dalla quale sia
accessibile il server
Strettamente collegato al punto precedente c'è il grande vantaggio di poter utilizzare
l'applicazione da qualunque posto in cui ci sia un accesso alla rete internet e sia presente una
qualunque macchina predisposta per l'accesso a internet e dotata di un browser.
D'altra parte gli svantaggi principali di cui soffrono le applicazioni web sono comuni a quelli
che presentano anche tutte le applicazioni client/server e tutti i sistemi che si appoggiano alla
rete internet:
1. Impossibilità di utilizzare l'applicazione se la rete è fuori servizio
Tutto quanto visto prima dipende strettamente dalla rete internet che costituisce la base
dell'applicazione stessa. Un problema su di essa, o sul collegamento della macchina locale alla
rete può pregiudicare l'accesso e quindi l'utilizzo dell'applicazione.
2. Transito in rete di dati sensibili / personali (problemi di sicurezza)
Essendo internet un canale insicuro, i dati che transitano in rete sono potenzialmente visibili a
estranei che li vogliano vedere ed è quindi necessario adottare meccanismi di protezione dei
dati (cifratura) per evitare una diffusione o una modifica indesiderata degli stessi.
Oltre a questi difetti, inevitabili se ci si vuole appoggiare alla rete Internet, le applicazioni web
soffrono anche della dipendenza più o meno marcata a seconda della tecnologia utilizzata
dalle caratteristiche del browser installato sul client. Per questo un'applicazione che funziona
perfettamente su un client può presentare vari problemi o perfino non funzionare su di un altro
client.
17