Cos`è Ajax?

annuncio pubblicitario
1
Cos’è Ajax?
Dal 2001 al 2005 il World Wide Web è passato attraverso una crescita spaventosa in termini di tecnologie
e metodologie utilizzate per portare questo strumento statico alla vita. Le brochure e i cataloghi online
hanno smesso di dominare il Internet nel momento in cui le applicazioni web sono divenute una parte
significativa delle destinazioni online. Le applicazioni web si differenziavano dai loro “antenati” siti web
nell’offrire ai propri utenti un servizio immediato non solo di tipo informativo. Che lo scopo fosse la
gestione di procedure commerciali o l’interesse personale, gli sviluppatori erano costretti a creare nuovi
paradigmi di interazione, visto che gli utenti iniziavano ad aspettarsi funzionalità più avanzate.
Stimolato da tecnologie poco note e ancor meno utilizzate, già presenti nei browser web da tempo, il
Web ha compiuto un notevole progresso, sconvolgendo il modo d’uso tradizionale che necessitava il caricamento completo di una pagina ogni volta che si accedeva a nuove informazioni o a una nuova parte
della logica dell’applicazione. Le varie aziende cominciarono a effettuare esperimenti con la ricarica
dinamica di porzioni di pagine web, per trasmettere al client solo una quantità ridotta di dati, realizzando
in questo modo un’esperienza utente più veloce e migliore.
A condurre questo movimento è stato Google. Dopo che il gigante dei motori di ricerca uscì allo scoperto, iniziarono ad apparire nuovi esperimenti condotti dai suoi ingegneri da una sezione del sito chiamata
Google Labs (labs.google.com). Molti dei progetti dei Google Labs, come Google Suggest e
Google Maps, consistevano di un’unica pagina web che pur non venendo mai scaricata veniva tuttavia
costantemente aggiornata. Tali innovazioni, che cominciarono a portare le affordance delle interfacce dei
software desktop entro i confini di un browser, furono elogiate in tutto il Web e considerate come l’avvento di una nuova era dello sviluppo web. E lo furono davvero.
Svariati prodotti open source e commerciali diedero il via allo sviluppo per approfittare di questo nuovo
modello di applicazione web. Tali progetti tentarono di spiegare la propria tecnologia servendosi di
espressioni quali JavaScript remoting, web remote procedure calls, e dynamic updating. Presto però
avrebbe prevalso un nuovo termine.
Nasce Ajax
Nel febbraio 2005 Jesse James Garrett di Adaptive Path LLC pubblicò online un articolo intitolato “Ajax:
A New Approach to Web Applications” ( “Ajax: Un nuovo Approccio alle Applicazioni Web”), tuttora
disponibile all’indirizzo www.adaptivepath.com/publications/essays/archives/000385.php. In questo scritto Garrett spiegava come, a suo avviso, le applicazioni web stessero colmando lo scarto fra il Web e le applicazioni desktop tradizionali. Citava poi le nuove tecnologie
e molti dei progetti Google come esempi del fatto che modelli di interazione utente tipicamente basati
Capitolo 1
su applicazioni desktop fossero ora impiegati nel Web. Di seguito venivano le due frasi che avrebbero
sollevato un polverone di interesse, agitazione e controversie:
Google Suggest e Google Maps sono due esempi di un nuovo approccio alle applicazioni web che noi di
Adaptive Path abbiamo chiamato Ajax. Il nome è una contrazione di Asynchronous JavaScript + XML e
rappresenta un passaggio fondamentale in ciò che è possibile realizzare sul Web.
Da quel momento, un’ondata di articoli su Ajax, di esempi di codice e di discussioni apparve ovunque
sul Web. Gli sviluppatori ne parlavano nei propri blog, le riviste di tecnologia nelle proprie pagine, e le
aziende iniziarono a legare ad Ajax i propri prodotti. Ma per comprendere che cosa sia Ajax, occorre
anzitutto sapere come l’evoluzione di svariate tecnologie web abbia portato al suo sviluppo.
L’evoluzione del Web
Quando Tim Berners-Lee preparò la prima proposta per il World Wide Web nel 1990, l’idea di base
era piuttosto semplice: creare una “ragnatela” (web) di informazioni collegate fra loro attraverso ipertesti e URI (Uniform Resource Identifiers). La possibilità di collegare i documenti più disparati in ogni
parte del mondo rappresentava un enorme potenziale da un punto di vista accademico: studiosi e ricercatori avrebbero potuto avere accesso quasi istantaneo ai materiali di riferimento bibliografico. La
prima incarnazione del linguaggio HTML (HyperText Markup Language) non presentava granché oltre
a comandi per la formattazione del testo e per i collegamenti, e non si trattava certo di una piattaforma
per realizzare software riccamente interattivo, bensì per condividere semplicemente le varie tipologie di
informazioni testuali ed esplicative che dominavano la tarda era della stampa. Furono queste pagine web
statiche il terreno di crescita del Web.
Con l’evolversi del Web, le varie imprese commerciali non tardarono a notare un grosso potenziale
nella possibilità di distribuire alle masse informazioni su prodotti e servizi. La generazione successiva
del Web vide un aumento della capacità di formattare e visualizzare informazioni grazie all’evoluzione
congiunta dell’HTML, che rispondeva sempre più alle esigenze e alle aspettative di questi utenti più abili
nell’utilizzo dei nuovi media. Ma una piccola compagnia chiamata Netscape avrebbe presto accelerato
considerevolmente l’evoluzione del Web.
JavaScript
Netscape Navigator fu il primo browser web tradizionale di successo, e come tale fece progredire rapidamente le tecnologie web. Tuttavia Netscape veniva frequentemente derisa dalle organizzazioni di
standard per la sua implementazione di nuove tecnologie e di estensioni per le tecnologie esistenti prima
che venissero approvati standard veri e propri (analogamente a Microsoft, che oggi viene condannata
perché lo sviluppo del suo Internet Explorer ignora gli standard esistenti). Una di quelle tecnologie era
JavaScript.
Originariamente chiamato LiveScript, JavaScript fu creato da Brendan Eich di Netscape e incluso nella
versione 2.0 del browser (rilasciata nel 1995). Per la prima volta, gli sviluppatori erano in grado di manipolare l’interazione di una pagina web con l’utente. Invece di compiere ripetuti andirivieni fra server e
client per semplici funzioni come la convalida di dati, divenne possibile trasferire questa piccola quantità
di elaborazione dati al browser. Tale capacità era importantissima in un’epoca in cui la maggior parte dei
navigatori in Internet si collegava con modem da 28,8 Kbps e in cui ogni richiesta al server equivaleva a
un certo intervallo di attesa. Ridurre il numero di occasioni in cui l’utente doveva attendere una risposta
fu il primo grande passo verso l’approccio Ajax.
Cos’è Ajax?
I Frame
La versione originale dell’HTML stabiliva che ogni documento fosse a sé stante, e solo con HTML 4.0
furono introdotti ufficialmente i frame. L’idea che la visualizzazione di una pagina web potesse essere
suddivisa in molteplici documenti era radicale, e scaturirono delle polemiche per il fatto che Netscape
decise di implementare tale funzionalità prima che lo standard HTML 4.0 venisse completato. Netscape
Navigator 2.0 fu il primo browser a supportare sia i frame sia JavaScript. Ciò si rivelò essere un passaggio
importante nell’evoluzione di Ajax.
Quando iniziarono le “guerre dei browser” fra Microsoft e Netscape alla fine degli anni Novanta, JavaScript e i frame vennero formalizzati. Con l’aggiunta di nuove funzionalità per entrambe le tecnologie,
gli sviluppatori più creativi cominciarono a fare esperimenti utilizzandoli congiuntamente. Dato che un
frame rappresentava una richiesta al server del tutto distinta, la capacità di controllare un frame e i relativi contenuti mediante JavaScript diede il via a diverse possibilità affascinanti.
La tecnica del frame nascosto
Mentre gli sviluppatori iniziavano a manipolare i frame in modi sempre più raffinati, emerse una nuova
tecnica per facilitare la comunicazione client-server. La tecnica del frame nascosto consisteva nell’impostare un frameset in cui a un frame veniva assegnata un’altezza o una larghezza pari a 0 pixel, il cui unico
scopo era quello di avviare la comunicazione con il server. Il frame nascosto conteneva un form HTML
con campi specifici che potevano essere compilati dinamicamente da JavaScript e rinviati al server. Al
suo ritorno, il frame avrebbe chiamato un’altra funzione JavaScript per informare la pagina chiamante
che i dati erano stati restituiti. La tecnica del frame nascosto rappresentò il primo modello richiesta/risposta asincrono per applicazioni web.
Questo fu il primo modello di comunicazione di Ajax, ma un altro progresso tecnologico era appena
dietro l’angolo.
L’HTML Dinamico e il DOM
Nel 1996, il Web era ancora principalmente un universo statico. Malgrado JavaScript e la tecnica del
frame nascosto avessero ravvivato l’interazione con l’utente, non esisteva ancora nessuna possibilità di
modificare l’aspetto di una pagina senza doverla ricaricare, a parte cambiando i valori dei campi del
form. Poi comparve Internet Explorer 4.0.
A questo punto, Internet Explorer aveva colmato il divario con la tecnologia del leader del mercato
Netscape Navigator e l’aveva persino superata in un aspetto importante con l’introduzione dell’HTML
Dinamico (DHTML). Pur essendo ancora in fase di sviluppo, il DHTML rappresentò un significativo
passo avanti rispetto all’epoca delle pagine web statiche, permettendo agli sviluppatori di alterare qualsiasi porzione di una pagina caricata grazie a JavaScript. Unitamente all’apparizione dei fogli di stile CSS
(Cascading Style Sheets), il DHTML diede nuovo vigore allo sviluppo per il web, malgrado le profonde
disparità dei percorsi che Microsoft e Netscape intrapresero agli albori di queste due discipline. L’eccitazione nella comunità degli sviluppatori era però giustificata, perché combinare il DHTML con la tecnica
del frame nascosto significava poter aggiornare qualsiasi parte di una pagina con informazioni dal server.
Questo fu un autentico cambiamento di modello per il Web.
DHTML non riuscì mai a diventare uno standard, anche se l’influenza di Microsoft si sarebbe fatta sentire in maniera decisa con l’introduzione del Document Object Model (DOM) come elemento centrale
del progetto per la standardizzazione di tale tecnologia. A differenza del DHTML, che cercava solamente di modificare le sezioni di una pagina web, il DOM aveva un obiettivo molto più ambizioso: fornire
una struttura per l’intera pagina web. La manipolazione di tale struttura avrebbe permesso modifiche di
tipo DHTML alla pagina stessa. Questo fu il successivo passo avanti verso Ajax.
Capitolo 1
Gli iframe
Malgrado la tecnica del frame nascosto si diffuse incredibilmente, presentava uno svantaggio: occorreva
pianificarla per tempo e scrivere un frameset che anticipasse l’utilizzo di frame nascosti. Quando l’elemento <iframe/> venne introdotto come componente ufficiale di HTML 4.0 nel 1997, esso rappresentò un’altra tappa importante nell’evoluzione del Web.
Invece di definire frameset, gli sviluppatori potevano sistemare iframe in qualsiasi punto della pagina.
Ciò permise loro di rinunciare del tutto ai frameset e di disporre semplicemente iframe invisibili (attraverso l’utilizzo di CSS) in una pagina per attivare la comunicazione client-server. E quando il DOM fu
definitivamente implementato in Internet Explorer 5 e Netscape 6, introdusse la possibilità di creare al
volo iframe in modo dinamico; si poteva cioè impiegare una funzione JavaScript per creare un iframe,
formulare una richiesta e ottenere la risposta, il tutto senza aggiungere codice HTML extra alla pagina.
Così si arrivò alla seconda generazione della tecnica del frame nascosto: la tecnica dell’iframe nascosto.
XMLHttp
Gli sviluppatori del browser di Microsoft dovevano essersi resi conto della popolarità della tecnica del
frame nascosto e della nuova tecnica dell’iframe nascosto, poiché decisero di fornire agli sviluppatori
web uno strumento migliore per l’interazione client-server. Tale strumento arrivò nel 2001 sotto forma di
un oggetto ActiveX chiamato XMLHttp.
Una delle estensioni Microsoft per JavaScript permetteva la creazione di controlli ActiveX, gli oggetti di
programmazione proprietari di Microsoft. Quando Microsoft iniziò a supportare lo XML attraverso una
libreria chiamata MSXML, venne incluso l’oggetto XMLHttp. Pur avendo XML nel nome, tale oggetto
non era soltanto uno dei tanti modi per manipolare dati XML: si trattava più di una richiesta HTTP
ad hoc che poteva essere controllata da JavaScript. Gli sviluppatori avevano così accesso ai codici di
stato e agli header HTTP, così come a qualsiasi dato restituito dal server. Quei dati potevano essere
XML strutturato, blocchi di codice HTML preformattato, oggetti JavaScript serializzati, oppure dati in
qualsiasi formato scelto dallo sviluppatore. Invece di utilizzare frame o iframe nascosti, ora era possibile
accedere al server sistematicamente servendosi di JavaScript puro, svincolato dal ciclo di caricamento/
ricaricamento della pagina. L’oggetto XMLHttp divenne uno strumento incredibile per gli sviluppatori
di Internet Explorer.
Vista la sua crescente diffusione, gli sviluppatori del progetto open source Mozilla lavorarono a un
proprio porting di XMLHttp. Invece di permettere l’accesso ad ActiveX i programmatori di Mozilla ne
replicarono i metodi e le proprietà principali in una richiesta objectXMLHttpRequest nativa del browser. Con il supporto di XMLHttp nei due browser più importanti (seppur in forme diverse), lo sviluppo
di interfacce di tipo Ajax prese decisamente piede e costrinse altri browser più marginali, come Opera e
Safari, a supportare una qualche forma di XMLHttp (entrambi optarono per un supporto nativo con un
oggetto XMLHttpRequest, sulla scia di Mozilla). Abbastanza ironicamente la popolarità di questo clone
di XMLHttp ritornò a Microsoft, che introdusse nativamente l’oggetto XMLHttpRequest in Internet
Explorer 7.
Il vero Ajax
Malgrado la presenza di svariate FAQ a supplemento dell’articolo di Garrett, rimane tuttora una certa
confusione su ciò che concerne la vera essenza di Ajax. In parole semplici, Ajax non è altro che un
approccio all’interazione web. Tale approccio riguarda la trasmissione di solo una piccola quantità di
informazioni da e verso il server, in modo da offrire all’utente l’esperienza più reattiva possibile.
Cos’è Ajax?
Invece del modello di applicazione web tradizionale, in cui il browser stesso si occupa di avviare richieste al server web e di processare le richieste provenienti da quest’ultimo, il modello Ajax prevede un
livello intermedio, che Garrett chiama motore Ajax (Ajax engine), atto a gestire tale comunicazione. Un
motore Ajax è in realtà un semplice oggetto o funzione JavaScript che viene chiamato ogni qual volta è
necessario richiedere informazioni al server. A differenza del modello tradizionale, che fornisce un collegamento a un’altra risorsa (per esempio un’altra pagina web), ogni collegamento esegue una chiamata
al motore Ajax, che programma ed esegue la richiesta. Essa viene eseguita in modo asincrono, ovvero
l’esecuzione del codice non attende una risposta prima di continuare.
Il server, che solitamente servirebbe HTML, immagini, CSS o JavaScript, viene configurato per inviare
dati che il motore Ajax può utilizzare. Questi dati possono essere testo puro, XML, o qualsiasi altro
formato di informazioni necessario. L’unico requisito è che il motore Ajax possa comprenderlo e interpretarlo.
Quando il motore Ajax riceve la risposta del server, passa all’azione, spesso esaminando i dati e apportando svariati cambiamenti all’interfaccia utente basandosi sulle informazioni ricevute. Dato che questo
processo comporta il trasferimento di una minore quantità di informazioni rispetto al tradizionale modello di applicazione web, l’interfaccia utente viene aggiornata più velocemente, e l’utente è in grado di
svolgere il proprio lavoro con maggiore efficienza. La Figura 1.1 è un adattamento della figura presente
nell’articolo di Garrett che mostra le differenze fra il modello di applicazione web tradizionale e quello
di Ajax.
Modello di applicazione Web Tradizionale
Web Browser
HTML, Images,
CSS, JavaScript
Richiesta
HTTP
Dati
Richiesta
dati/interrogazione
Web Server
Database
Modello di applicazione Web Ajax
Web Browser
HTML, CSS
Interfaccia
utente
Chiamata
JavaScript
Dati
Motore
Ajax
Richiesta
HTTP
Dati
Richiesta
dati/interrogazione
Web Server
Database
Figura 1.1
I principi di Ajax
Essendo un nuovo modello di applicazione web, Ajax è ancora nella sua prima infanzia. Tuttavia molti
sviluppatori web hanno considerato questo nuovo sviluppo come una sfida. La sfida è distinguere ciò
che rende ottima un’applicazione web Ajax da ciò che la rende pessima o mediocre. Michael Mahemoff
(www.mahemoff.com), sviluppatore di software ed esperto di usabilità, ha identificato svariati principi chiave di ottime applicazioni Ajax; vale la pena ripeterli qui:
Capitolo 1
 Traffico minimo: le applicazioni Ajax dovrebbero ricevere e inviare la minor quantità di
informazioni possibile da e verso il server. Insomma, Ajax può minimizzare il traffico fra client
e server. Assicurarsi che la propria applicazione Ajax non invii e riceva informazioni inutili ne
favorisce la robustezza.
 Niente sorprese: le applicazioni Ajax solitamente introducono modelli di interazione utente
diversi rispetto alle applicazioni web tradizionali. A differenza dello standard web di fare clic
e attendere, alcune applicazioni Ajax si servono di altri paradigmi di interfaccia, quali il drag
and drop o il doppio clic. A prescindere da quale modello di interazione utente si scelga, si
mantenga una generale coerenza, in modo che l’utente sappia sempre come agire.
 Convenzioni prestabilite: non si perda tempo a inventare nuovi modelli di interazione
utente che risulteranno estranei agli utenti finali. Meglio prendere a prestito il più possibile da
applicazioni web e desktop tradizionali, così da avere una curva d’apprendimento minima.
 Nessuna distrazione: evitare elementi di pagina inutili e che distraggono come animazioni
continue e sezioni di pagina lampeggianti. Espedienti di questo tipo distolgono l’utente da ciò
che sta cercando di realizzare.
 Accessibilità: tenere presente chi saranno i propri utenti primari e secondari e come interagiranno con l’applicazione Ajax. Evitare di progettare un’applicazione che possa tagliare fuori
completamente un tipo di pubblico inaspettato. I propri utenti impiegheranno browser più
datati o software speciali? Meglio saperlo con anticipo e regolarsi di conseguenza.
 Evitare interi caricamenti di pagina: tutta la comunicazione con il server dopo l’iniziale
caricamento di pagina deve essere gestita dal motore Ajax. Non si comprometta l’esperienza
utente caricando piccole quantità di dati in un punto ed eseguendo interi caricamenti di pagina
in un altro.
 L’utente innanzi tutto: progettare l’applicazione Ajax pensando all’utente prima di ogni altra cosa. Cercare di semplificare al massimo gli utilizzi più comuni, senza farsi prendere troppo
da questioni come l’inserimento di pubblicità o di effetti piacevoli.
Il comune denominatore di tutti questi principi è l’usabilità. Lo scopo primario di Ajax è migliorare
l’esperienza web dei propri utenti; la tecnologia che lo permette è semplicemente un mezzo per tale fine.
Attenendosi ai principi qui elencati, si può essere ragionevolmente sicuri che la propria applicazione
Ajax risulterà utile e usabile.
Le tecnologie alla base di Ajax
L’articolo di Garrett cita diverse tecnologie che egli vede come parti di una soluzione Ajax:
 HTML/XHTML: linguaggi di rappresentazione del contenuto primario.
 CSS: fornisce formattazione stilistica allo XHTML.
 DOM: aggiornamento automatico di una pagina caricata.
 XML: formato di interscambio dati.
 XSLT: trasforma XML in XHTML (con stili forniti dai CSS).
 XMLHttp: agente di comunicazione primario.
 JavaScript: linguaggio di scripting utilizzato per programmare un motore Ajax.
In realtà, tutte queste tecnologie possono essere sfruttate in soluzioni Ajax, ma soltanto tre sono fonda-
Cos’è Ajax?
mentali: HTML/XHTML, DOM e JavaScript. XHTML è ovviamente necessario per la visualizzazione
delle informazioni, mentre DOM è richiesto per cambiare porzioni di una pagina XHTML senza ricaricarla. L’ultimo componente, JavaScript, è indispensabile per avviare la comunicazione client-server e
manipolare il DOM per aggiornare la pagina web. Le altre tecnologie dell’elenco precedente sono utili
per affinare una soluzione Ajax, ma non sono necessarie.
Vi è un componente importante che Garrett ha dimenticato di citare nel suo articolo: la necessità dell’elaborazione lato server. Tutte le tecnologie summenzionate si relazionano direttamente al motore Ajax
lato client, ma non vi è Ajax senza un server stabile e reattivo in attesa di inviare contenuti al motore.
Per questo scopo è possibile utilizzare l’applicazione server che si desidera. Che si scelga di scrivere i
componenti lato server come pagine PHP, servlet Java o componenti .NET, occorre solo assicurarsi che
venga inviato in risposta al motore Ajax il formato di dati corretto.
Gli esempi presenti in questo volume fanno uso di quante più applicazioni lato server possibili, per offrire informazioni
sufficienti a impostare sistemi di comunicazione Ajax sulle tipologie di server più varie. La maggior parte degli esempi
presenti in questo libro sono disponibili nelle versioni PHP, JSP e ASP.NET su www.wrox.com.
Chi utilizza Ajax?
Molti siti web commerciali si servono di tecniche Ajax per rendere più efficace l’esperienza utente. Tali siti si
comportano molto più come applicazioni web che non come siti dalla tradizionale presentazione “a brochure” dei prodotti e che visualizzano informazioni solo perché il visitatore li consulta con uno scopo ben preciso.
Le seguenti sono alcune delle applicazioni web più conosciute e meglio realizzate che fanno uso di Ajax.
Google Suggest
Uno dei primi esempi che viene citato dagli sviluppatori quando parlano di Ajax è Google Suggest
(www.google.com/webhp?complete=1). L’interfaccia è semplicemente una copia della pagina principale di Google, che mette in evidenza una casella di testo per inserire i termini della ricerca.
Tutto appare come al solito, finché non si inizia a scrivere nella casella. Mentre si scrive, Google Suggest
richiede suggerimenti al server e mostra un elenco di termini di ricerca di potenziale interesse. A fianco
di ogni suggerimento viene riportato il numero di risultati associati al termine, così da poter meglio
decidere (Figura 1.2). Questa semplice interazione client-server è molto potente ed efficace senza essere
d’intralcio all’utente. La reattività dell’interfaccia è superiore a qualsiasi aspettativa in ambito di applicazioni web: si aggiorna sempre a prescindere dalla rapidità con cui si scrivono i termini e, analogamente
alle funzioni di autocompletamento dei software desktop, si possono utilizzare i tasti freccia su e freccia
giù per evidenziare e selezionare ogni termine nell’elenco dei suggerimenti. Pur essendo ancora in beta,
è ragionevole aspettarsi questo approccio nella pagina principale di Google in un futuro prossimo.
Gmail
Gmail, il servizio email gratuito di Google, è stato entusiasticamente definito come una meraviglia dell’interazione client-server nell’era di Ajax. Quando si effettua il login in Gmail per la prima volta, un
motore di interfaccia utente viene caricato in uno dei pochi iframe utilizzati dall’applicazione. Tutte le
ulteriori richieste al server avvengono attraverso questo motore di interfaccia utente mediante un oggetto
XMLHttp. I dati che vengono scambiati tra client e server sono codice JavaScript, che prevede un’esecuzione molto rapida una volta scaricato dal browser. Tali richieste istruiscono il motore di interfaccia
utente su ciò che deve essere aggiornato a video. In più, l’applicazione Gmail utilizza diversi frame e
iframe per gestire e archiviare in cache i cambiamenti più notevoli dell’interfaccia utente. L’uso estremamente complesso dei frame permette a Gmail di funzionare correttamente con i pulsanti Indietro e
Capitolo 1
Avanti, uno dei vantaggi dell’utilizzo di frame e iframe al posto di XMLHttp (trattato più avanti) o in
congiunzione a esso. Il successo più grande di Gmail è la sua usabilità. L’interfaccia utente (Figura 1.3) è
semplice e ordinata. L’interazione con l’utente e la comunicazione con il server sono molto fluide. Ancora una volta, Google ha impiegato Ajax per migliorare ulteriormente un concetto già semplice, così da
fornire un’esperienza utente eccezionale.
Figura 1.2
Figura 1.3
Cos’è Ajax?
Google Maps
Un’altra parte delle applicazioni web Ajax di Google è Google Maps (maps.google.com). Ideata
per concorrere con affermati siti cartografici, Google Maps si serve di Ajax per evitare completamente il
ricaricamento della sua pagina principale (Figura 1.4).
A differenza di altre applicazioni web di cartografia, Google Maps permette all’utente di trascinare la
mappa per spostarla in varie direzioni. Il codice per il trascinamento non è nulla di nuovo per sviluppatori JavaScript, ma la segmentazione della mappa e l’effetto di scorrimento apparentemente infinito sono
tutta un’altra faccenda. La mappa è suddivisa in una serie di immagini che vengono affiancate fra loro
per creare l’aspetto di un’immagine contigua. Il numero di immagini utilizzate per visualizzare la mappa
è limitato, dato che la creazione di nuove immagini a ogni spostamento della mappa da parte dell’utente
porterebbe rapidamente a problemi di memoria. Vengono invece impiegate in continuazione le stesse
immagini per mostrare segmenti diversi della mappa.
La comunicazione client-server viene effettuata mediante un iframe nascosto. Ogni volta che viene
compiuta una ricerca o si richiedono nuove indicazioni, queste informazioni vengono inviate e restituite all’interno di quell’iframe. I dati restituiti sono in formato XML e vengono passati a una funzione
JavaScript (il motore Ajax) per la gestione. Tale XML è quindi utilizzato in svariati modi: una parte di
esso richiama le immagini-mappa corrette, un’altra viene trasformata in HTML attraverso XSLT e visualizzata nella finestra principale. Insomma, si tratta di un’applicazione Ajax che nel 2006 si è confermata
al secondo posto per il mapping di destinazioni su Web.
Figura 1.4
A9
Amazon.com è noto in tutto il mondo per essere un mercato online tramite il quale acquistare praticamente di tutto. Quando però inaugurò un motore di ricerca, lo fece senza troppa ostentazione. L’introduzione di A9 (www.a9.com) presentò una forma di ricerca avanzata che permette di cercare
Capitolo 1
contemporaneamente diversi tipi di informazioni. Per le ricerche web e di immagini si serve di MSN
per recuperare i risultati. Effettua ricerche di libri su Amazon.com e di film su IMDb (Internet Movie
Database). Dalla metà del 2005 sono state aggiunte ricerche nelle Pagine Gialle, nella Wikipedia e in
Answers.com.
Ciò che rende unico A9 è il metodo di funzionamento dell’interfaccia. Quando si effettua una ricerca, i
vari tipi di risultati vengono visualizzati in aree differenti della pagina (Figura 1.5).
Nella pagina dei risultati della ricerca è presente l’opzione di selezionare altre ricerche da svolgere secondo gli stessi criteri. Quando si seleziona una casella di controllo corrispondente a un tipo di ricerca,
la ricerca viene eseguita dietro le quinte mediante una combinazione di iframe nascosti e di XMLHttp.
L’interfaccia utente si sposta per fare spazio ai nuovi risultati di ricerca, che vengono caricati non appena
ricevuti dal server. Ciò che si ottiene è una pagina di risultati di ricerca molto più reattiva e che non
occorre ricaricare quando si vogliono cercare tipologie differenti di informazioni.
Figura 1.5
Yahoo! News
Anch’esso introdotto nel 2005, il sito Yahoo! News (news.yahoo.com) presenta un design rinnovato. L’innovazione consiste in un’interessante funzionalità: quando l’utente muove il puntatore del mouse
su un determinato titolo, appare un piccolo riquadro che offre un riassunto dell’articolo ed eventualmente una fotografia associata alla notizia (Figura 1.6).
I dati relativi a foto e riassunto vengono recuperati dal server mediante XMLHttp e inseriti dinamicamente nella pagina. Questo è un esempio perfetto di come si possa impiegare Ajax per migliorare una
pagina web. Invece di rendere Ajax la modalità di utilizzo primaria, il sito Yahoo! News è totalmente
usabile senza Ajax; la funzionalità Ajax viene utilizzata solo per aggiungere un’esperienza utente più
reattiva per quei browser che la supportano. Sotto la superficie si trova una pagina HTML semanticamente corretta che viene arrangiata anche senza formattazione CSS.
10
Cos’è Ajax?
Figura 1.6
Figura 1.7
11
Capitolo 1
Bitflux Blog
Un altro esempio notevole dell’uso di Ajax come semplice miglioria aggiuntiva è Bitflux Blog (blog.
bitflux.ch/), che presenta una tecnologia chiamata LiveSearch. LiveSearch lavora congiuntamente alla casella di ricerca del sito. Mentre si scrive nel campo di ricerca, un elenco di possibili risultati
viene visualizzato immediatamente al di sotto di essa (Figura 1.7).
I risultati della ricerca vengono recuperati utilizzando XMLHttp come una stringa HTML che viene
poi inserita nella pagina. Si possono effettuare ricerche nel sito anche alla vecchia maniera: scrivendo
nell’apposito campo e premendo Invio. La funzionalità Ajax LiveSearch è soltanto una miglioria del sito
e non è indispensabile per le ricerche.
Confusione e polemiche
Malgrado la popolarità del termine Ajax, il concetto ha incontrato una buona dose di polemica e dissenso. Alcuni ritengono che Ajax sia un’aberrazione di ciò verso cui il Web si stava muovendo prima dell’avvento di Ajax. I proponenti dell’HTML semantico, dell’accessibilità e della separazione di contenuti
e presentazione stavano guadagnando terreno e consensi fra gli sviluppatori web, e alcuni credono che la
popolarità di Ajax abbia ricacciato quel movimento in una posizione di sfondo. La convinzione di questi
detrattori è che Ajax promuova la creazione della presentazione all’interno di JavaScript, convertendola
quindi in un miscuglio disordinato simile agli albori dello scripting lato server. Molti ritengono che l’accessibilità possa risentirne se un numero maggiore di sviluppatori passerà a soluzioni Ajax.
Altri hanno dedicato molto tempo a sviscerare l’articolo di Garrett e a confutare svariate sue presupposizioni. Per esempio, l’articolo più volte identifica nell’utilizzo di XML e di XMLHttp il nucleo del
modello Ajax, ma molti degli esempi portati da Garrett non si servono dell’una o dell’altra di queste due
tecnologie. Gmail e Google Maps utilizzano queste tecnologie molto moderatamente; Google Suggest
utilizza soltanto XMLHttp e per l’interscambio dati si serve di vettori JavaScript e non dello XML. I
critici fanno notare inoltre che la spiegazione tecnica di Ajax data nell’articolo è del tutto fuorviante,
nominando svariate tecnologie non solo superflue (come XML e XMLHttp) ma il cui uso è improbabile
in molti casi (come XSLT).
Un’altra grande controversia che circonda Ajax e l’articolo di Garrett riguarda il fatto che Ajax sia semplicemente un nome nuovo per una tecnica in uso ormai da tempo. Anche se questo tipo di recupero di
informazioni poteva essere attivato in Netscape Navigator 2.0, esso divenne molto più importante nel
2001-2002, specialmente con la pubblicazione di un articolo sul sito Apple Developer Connection dal
titolo “Remote Scripting With IFRAME” ( “Scripting remoto con IFRAME”), disponibile all’indirizzo
http://developer.apple.com/internet/webcontent/iframe.html. Questo
scritto viene ampiamente considerato come il primo articolo pubblicato riguardante metodologie di tipo
Ajax. L’espressione remote scripting non ha mai preso piede con la stessa potenza ed efficacia di Ajax.
Altri ancora si fanno beffe del termine Ajax e dell’articolo di Garrett, ritenendo che la sua creazione sia
stata poco più che un espediente di marketing per favorire l’azienda di Garrett, Adaptive Path LLC. Alcuni pensano che il coniare un nome per una tecnica già esistente sia un atto insincero e un chiaro segno
di cattive intenzioni. A prescindere da questa e molte altre polemiche intorno ad Ajax, tale approccio ora
possiede un nome sempre più familiare a molti sviluppatori. Di qui l’esigenza di un approfondimento e
di una spiegazione, così che questo nome possa essere impiegato nei modi migliori.
Ajax e il Web 2.0
Poco tempo dopo che fu coniato il termine Ajax comparve un’altro nuovo lemma: Web 2.0. Inizialmente
Web 2.0 fu il nome di una conferenza tenuta da O’Reilly Media e CMP Media nel 2005. Successivamente il termine rimase in vita e divenne popolare su tutta Internet come descrizione dei cambiamenti che
12
Cos’è Ajax?
il Web avrebbe effettuato. Per fare in modo che non si dessero i significati più disparati al termine Web
2.0, Tim O’Reilly (fondatore e CEO di O’Reilly) scrisse un articolo intitolato “What is Web 2.0” (disponibile online su www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/
what-is-web-20.html) descrivendo i concetti che credeva rappresentassero il Web 2.0. Questi
concetti includono:
Il Web inteso come insieme di servizi e non come software.
La mentalità di gruppo del Web; gli utenti incoraggiati a partecipare (a commentare, a scrivere blog, a
connettersi in rete e così via).
Separazione dei dati dalla presentazione; i dati possono essere rappresentati in tanti modi diversi e combinati con altre sorgenti di dati (chiamate mashup).
Esperienze dell’utente più ricche e sensibili.
Ajax è legato all’ultimo punto, creando esperienze utente più ricche. Per chiarire il concetto, Ajax non
è un sinonimo di Web 2.0, e il Web 2.0 d’altra parte non parla mai di Ajax. Il Web 2.0 tratta il cambiamento di comportamento del Web. Mentre Ajax è una parte importante per creare le esperienze utente
di prossima generazione che il Web 2.0 promuove; è come una tessera di un grande puzzle.
Riepilogo
Questo capitolo è servito da introduzione alla premessa fondamentale di Ajax. Forma contratta di Asynchronous JavaScript + XML, il termine Ajax è stato coniato da Jesse James Garrett in un articolo pubblicato sul sito web dell’azienda Adaptive Path LLC. L’articolo ha presentato Ajax come un nuovo modello
di interazione utente per applicazioni web in cui non sono più necessari i caricamenti completi delle
pagine.
Il presente capitolo ha inoltre trattato l’evoluzione del Web in relazione allo sviluppo di tecnologie che
hanno permesso ad Ajax di essere una realtà oggi. Ajax deve la propria esistenza all’introduzione di
JavaScript e dei frame nei browser web, che resero teoricamente possibile il recupero dati asincrono in
Netscape Navigator 2.0. Attraverso l’evoluzione di nuove tecnologie web, si svilupparono metodologie
Ajax come la tecnica del frame nascosto. L’introduzione degli iframe e di XMLHttp diede una forte
spinta allo sviluppo di Ajax.
Sebbene Ajax possa essere impiegato per realizzare moltissime funzioni, lo si utilizza in maniera più
efficace per migliorare l’esperienza utente, e non per creare piacevoli effetti visivi. Questo capitolo ha
trattato svariati principi di Ajax, tutti accomunati da un requisito basilare, ovvero che sia l’utente il centro
dello sviluppo di applicazioni web.
Sono state presentate inoltre alcune delle più note applicazioni Ajax, fra cui Google Suggest, Gmail,
Google Maps, Yahoo! News e Bitflux Blog.
Infine nel capitolo si è parlato delle polemiche e delle controversie che circondano Ajax, l’articolo di
Garrett, e il ruolo di Ajax nel Web. Alcuni ritengono che la diffusione di Ajax porterà a una generale
mancanza di accessibilità, mentre altri criticano le motivazioni che hanno spinto Garrett a scrivere questo articolo ormai famoso. Come per ogni approccio, Ajax dà il meglio di sé quando viene impiegato nel
perfezionamento logico di una applicazione web ben progettata.
13
Scarica