468x60

giovedì 21 agosto 2008

Ajax: un nuovo approccio per le applicazioni Web

Incipit

Questo articolo è la traduzione della versione inglese intitolata “Ajax: A New Approach to Web Applications” scritta da Jesse James Garrett.

Introduzione

Qualsiasi progetto interattivo definito “affascinante” è destinato a diventare un’applicazione Web.
Dopo tutto, quando è stata l’ultima volta che abbiamo sentito qualcuno parlare di un progetto interattivo che non era presente sul Web? (Ok, oltre l’iPod.) Tutti i nuovi progetti innovativi sono destinati ad essere online.

Nonostante ciò, i progettisti web non possono fare altro che essere un po’ invidiosi dei colleghi che creano applicazioni Desktop.
Le applicazioni Desktop hanno una completezza e una velocità di risposta elevata che risultano essere fuori dalla portata del Web.
La semplicità che ha portato alla proliferazione del Web ha creato un divario tra le esperienze che noi possiamo fornire mediante le applicazioni Web e le applicazioni Desktop.

Quel divario oramai non esiste più. Basta dare uno sguardo a Google Suggest. Si può vedere come i termini suggeriti durante la digitazione vengano aggiornati quasi istantaneamente. Focalizziamoci su Google Maps. Ingrandiamo la mappa. Usiamo il cursore per trascinare e muovere la mappa. Ancora possiamo notare come qualsiasi cosa che accade è quasi istantanea, senza dover aspettare il ricaricamento della pagina.

Google Suggest e Google Maps sono due esempi del nuovo approccio alle applicazioni web che Adaptive Path chiama Ajax. Il nome è l’abbreviazione di Asynchronous JavaScript + XML e rappresenta una svolta fondamentale su ciò che sarà possibile fare sul Web.

Definiamo Ajax

Ajax non è una tecnologia. E’ l’insieme di più tecnologie indipendenti che insieme danno vita a potenti prospettive. Ajax incorpora a se:

Le classiche applicazioni Web lavorano in questo modo: molte delle operazioni non sono altro che una richiesta HTTP inoltrata al web server. Il server fa l’elaborazione - raccolta dati, manipolazione numeri, dialogo con eventuali sistemi legacy (datati) - e ritorna una pagina HTML al client. Questo è un modello adottato sin dalle origini del Web, considerato medium ipertestuale, ma come sanno i fanatici della User Experience, esso rende il Web ottimale per l’ipertesto ma non necessariamente così ottimale anche per le applicazioni software.

Modello tradizione applicazioni Web confrontato con quello Ajax
Figura 1: Il modello tradizionale delle applicazioni Web (alla sinistra) confrontato col modello Ajax (alla destra).

Questo approccio crea una miriade di soluzioni/quesiti tecnici che annebbiano quelli inerenti la User Experience. Mentre il server stà elaborando, l’utente cosa fa? Aspetta, e sarà costretto a farlo ad ogni richiesta.

Naturalmente, se noi progettavamo l’applicazione Web come un’applicazione software, questo non accadeva. Una volta che è stata caricata l’interfaccia, perchè l’interazione dell’utente deve fermarsi ogni volta che l’applicazione ha bisogno di processare il server? Perchè l’utente deve vedere l’applicazione dialogare con il server così pesantemente?

Ajax fa la differenza

Un’applicazione Ajax elimina la natura del Web ad essere contraddistinta da momenti alternati di dialogo-risposta che fanno attendere l’utente, introducendo un intermediario - un motore Ajax - tra l’utente e il server.
Può sembrare di aggiungere un livello all’applicazione che la rende meno veloce a rispondere, però è vero il contrario.

Invece di caricare una classica pagina web, ad inizio sessione, il browser carica il motore Ajax - scritto in Javascript e usualmente associato ad un frame invisibile. Questo motore è responsabile della comunicazione tra l’interfaccia utente e il server, mettendoli in comunicazione tra di loro. Il motore Ajax, indipendentemente dalla comunicazione con il server, permette all’interazione dell’utente con l’applicazione di essere asincrona. Così l’utente non è mai succube della finestra del browser bianca e dell’iconcina indicante il caricamento, aspettando che il server esegua le operazioni.

Modello di interazione sincrona confrontato con quella asincrona
Figura 2: Modello di interazione sincrona di un’applicazione web (sopra) confrontato con il modello asincrono Ajax (sotto).

Ogni azione dell’utente che normalmente genera una richiesta HTTP prende la forma di una chiamata Javascript verso il motore Ajax. Ogni risposta che non richiede la chiamata diretta al server - come validare alcuni dati, modificare dati in memoria - è un lavoro compiuto dal motore Ajax. Se il motore ha bisogno di interagire con il server per rispondere - invio dati da processare, caricare un interfaccia aggiuntiva, ricevere nuovi dati - il motore rende queste richieste asincrone, usualmente utilizzando XML, senza bloccare l’interazione tra utente e applicazione.

Chi usa Ajax

Google stà facendo molti investimenti nell’utilizzare AJAX come nuovo approccio. La maggior parte dei prodotti di Google introdotti anni fa - Orkut, Gmail, Google Groups, Google Suggest e Google Maps - sono applicazioni basate su Ajax. (per una migliore trattazione tecnica sull’implementazione Ajax, si consiglia di vedere l’analisi di Gmail, Google Suggest e Google Maps) Molti altri stanno seguendo lo stesso approccio: molte funzioni di Flickr sono basate su Ajax e il motore di ricerca di Amazon A9.com usa tecniche similari.

Questi progetti dimostrano che Ajax non risulta essere pura tecnica ma anche un’ottima pratica per la creazione di applicazioni molto utili. Non è una delle tante tecnologie utilizzate solo nei laboratori. Le applicazioni Ajax possono avere dimensioni diverse, dalla più semplice come Google Suggest, alla più complessa come Google Maps.

Uno sguardo al futuro

La maggiore sfida che Ajax pone davanti ai nostri occhi non riguarda la risoluzione dei problemi tecnici da esso derivati, ma il dimenticare tutte le limitazioni che riguardavano il Web, per lanciarsi verso la creazione di applicazioni robuste, veloci e sempre più simili alle applicazione Desktop.

Nessun commento:

Posta un commento

468x60

Cerca su Google

Cerca nel Blog con Google