Il Web 2.0 è una filosofia, Ajax il paradigma

Web 2.0, è piú di un nuovo modo di fare siti: si tratta di un nuovo modo di
pensare l’atteggiamento nei confronti del lettore/autore/utente del sito. Ajax rappresenta il paradigma del Web 2.0.

AJAX sta per Asynchronous JavaScript And XML: con questo termine s’intendono, quindi, un insieme di
tecnologie.

AJAX é immediatamente concepibile come evoluzione del Javascript, soprattutto del modello DHTML. Fino a qualche anno fa c’erano notevoli differenze tra il Javascript usato da Internet Explorer e quello usato dall’allora Netscape, poi Mozilla o Firefox; inoltre il modello ad oggetti che rappresentava la pagina era parzialmente diverso nei due Browser rendendo molto difficile uniformare lo sviluppo: in parte alcune cose non funzionavano proprio, in parte erano incompatibili o non riconciliabili con l’altro browser; scrivere codice che potesse funzionare in modo cross-browser era un’impresa! L’approvazione di nuovi standard da parte del W3C ha consentito la creazione di nuovi tipi di oggetti ed ha in
parte calmierato questa situazione.

AJAX si basa su un oggetto Javascript: quest’ oggetto si chiama XmlHttpRequest ed è implementato in maniera leggermente differente in quelli che possiamo considerare i tre browser principali che sono Internet Explorer, FireFox, Safari. Questo oggetto Javascript consente di definire delle funzioni e di fare in modo che queste funzioni siano richiamate in maniera asincrona quando il Server Web invia una risposta in XML.

Usare AJAX presuppone, quindi, la programmazione di script sull’idea DHTML per costruire un’interfaccia web che puó cambiare i suoi contenuti in maniera dinamica, e poi fare le richieste al server in maniera nascosta, senza feedback per l’utente che non vede alcun caricamento della pagina: grazie a XmlHttpRequest vengono fatte richieste e, se scelto, si ottengono le risposte in modo asincrono senza bloccare la normale attivitá del browser.

Il vantaggio principale di AJAX rispetto alle altre tecnologie è che è possibile avere una pagina con piú contenuti dinamici che si modificano contemporaneamente in seguito all’azione di un utente. Questo consente innanzitutto di migliorare la “User Experience” e rendere la Web UI il piú simile possibile all’interfaccia grafica che abbiamo normalmente sui nostri
computer e quindi abbassare moltissimo le differenze dal punto di vista percettivo che si hanno tra un’interfaccia web tipicamente percepita come statica ed un’interfaccia, come puó essere quella di Windows o di Linux, che sono sicuramente piú dinamiche.

Il vantaggio piú evidente nell’adozione di AJAX è quindi la possibilitá di chiudere il gap con interfacce grafiche piú efficaci come quelle realizzabili con FLASH e ad un costo, concettualmente, prossimo allo zero. In realtá AJAX ha una valenza anche sulle comunicazioni e sul carico generale dell’applicativo web; quanto espresso è evidente se consideriamo due punti:

  • meccanismo asincrono request/response
  • capacitá di manipolazione dell’eventuale documento XML di risposta

I vantaggi del primo punto risultano evidenti se si pensa al fatto che ad oggi ogni interazione dell’utente, generalmente, implica un re-load della pagina, non è possibile un caricamento selettivo della vista di un determinato widget. Con AJAX questo problema è risolto e questo implica minor materiale spostato su rete, minori tempi d’attesa per l’utente e conseguente maggiore scalabilitá del prodotto. E’ inoltre da ricordare che un meccanismo asincrono ci avvicina maggiormente al concetto di servizio e alla “speranza” di un basso accoppiamento tra Client e Server.

Il secondo punto è conseguenza della natura stessa dell’oggetto XmlHttpRequest. Questo elemento converte l’eventuale risposta XML in un DOM manipolabile via javascript, con un’operativitá del tutto simile a quanto fatto sul DOM di una pagina HTML. Questo discorso apre la strada all’adozione di dialetti XML per le risposte verso il Client e la possibilitá, sempre lato Client, di alterare gli elementi renderizzati fornendo un feedback immediato all’Utente.