Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 23 di 24
  • livello principiante
Indice lezioni

Analisi con AJAX

Alcune considerazioni sulla progettazione di applicazioni Web con interazioni asincrone
Alcune considerazioni sulla progettazione di applicazioni Web con interazioni asincrone
Link copiato negli appunti

L'analisi progettuale da effettuare per un applicativo basato esclusivamente su ajax è sicuramente diversa dal solito ma non per questo necessariamente dispendiosa. Prendendo spunto dagli esempi di questa guida si può notare come parte del codice, sia client che server, sia dedicato esclusivamente alla degradabilità dell'applicativo proposto.

Ma è proprio necessario rendere qualunque interazione asincrona usufruibile da chiunque ?

La risposta non è scontata poichè teoricamente un sito internet, di dominio pubblico, dovrebbe permettere a chiunque di essere consultato, ma analizzando la situazione attuale, dove molti usano ancora applet Java e molti altri propongono pagine visualizzabili esclusivamente dal Flash Player, ci accorgiamo di quanto spesso gli sviluppatori, o i loro clienti, trascurino la possibilità di rendere i propri contenuti visionabili dal 100% dei navigatori.

Spesso si rinuncia perfino ad una corretta indicizzazione nei motori di ricerca: lasciando testo nascosto nella pagina o utilizzando chiavi generiche e sperando di riuscire a rosicchiare qualche posizione.

In genere è opportuno creare strutture pubbliche agibili da chiunque, ma qualora l'applicativo fosse richiesto da un'azienda privata, magari per la propria intranet, e l'azienda non dovesse avere particolari esigenze, sarebbe poco sensato tentare di rendere il servizio degradabile. Discorso analogo per le aree di amministrazione, dove se non ci sono esigenze particolari, lo sviluppo in AJAX potrebbe risultare addirittura più veloce ed usabile.

Il vantaggio è dato dall'approccio con il quale è consigliabile creare l'applicativo, dove ogni parte dello stesso dovrebbe essere slegato e dove ogni metodo, o ogni funzione, dovrebbe poter svolgere quel singolo compito autonomamente al fine di permettere modifiche al dettaglio più veloci, semplici ed il più delle volte, con minor margine di errore grazie ad una concentrazione maggiore sulla singola operazione e non sull'insieme necessarie per mostrare l'intera area esecutiva.

Inoltre nel caso di un'area di amministrazione non servirà preoccuparsi di indicizzazione e motori di ricerca.

Esistono molte librerie, per ogni linguaggio server-side, in grado di sfruttare in modo automatizzato o facilmente integrabile le possibilità offerte dallo scambio dati asincrono. Molte si basano proprio sulla creazione di funzioni apposite addette a svolgere determinati compiti mentre altre si basano sulla gestione di classi o dei loro metodi attraverso automazioni generate dinamicamente e date in pasto al JavaScript.

La separazione di client e server e dei rispettivi compiti diventa così ancor più accentuata ma allo stesso tempo si trasforma in una vera e propria simbiosi, dove il controllo dell'applicativo è dato dalla somma del linguaggio client più quello server e non più solo da quest'ultimo.

Nella scelta dell'eventuale framework o libreria si consiglia di valutarne la compatibilità almeno con i browsers più diffusi e non solo con alcuni di questi.

Per concludere ecco il link ad un sito che racchiude numerose librerie chiamato AJAX Matters, non resta quindi che testare la più adatta per le proprie esigenze o prendere spunto dalle più famose qualora si desideri crearne una propria.

Implementare AJAX

Il più delle volte aggiungere interazioni asincrone a vecchi applicativi è un'oprazione più che dispendiosa, soprattutto se fatta da persone che non hanno sviluppato il prodotto per il quale è richiesto tale aggiornamento.

Dover scorporare parti utili di un'interfaccia basata su un sistema di template o strutturata in modo vincolante per ogni singola parte potrebbe richiedere sia la modifica di parti di codice lato server, sia l'aggiunta di file dedicati a svolgere semplici operazioni altrimenti soffocate da una struttura poco flessibile o ridondante.

L'aggiunta del codice client all'eventuale template o l'implementazione di un gestore dedicato per i files JavaScript, potrebbe risultare un'operazione altrettanto complessa o comunque macchinosa, aumentando ulteriormente i tempi di aggiornamento.

Basare da subito lo sviluppo di un applicativo in modo tale da poter implementare successivamente, con pochi passaggi, il javascript necessario è invece il modo più semplice e veloce per creare rich internet applications degradabili.

Gli esempi proposti in questa guida sono buoni spunti di partenza poichè ognuno di questi è stato prima pensato :

  • per un'utenza non compatibile,
  • comunque in previsione di uno scambio dati asincrono.

Solo dopo si è implementato. Ovvio che alcune operazioni potrebbero risultare dedicate, basti pensare al lettore RSS delle news di Google, dove l'utilizzo senza JavaScript risulta completamente differente dall'utilizzo con supporto asincrono, ma dove aggiungere dinamicità è stata un'operazione naturale.

Una parentesi necessaria che sminuisce in parte questo esempio è sulla risposta asincrona nel caso della richiesta del feed: sarebbe stato sicuramente meglio parsare solo i dati utili attraverso il linguaggio server, al fine di evitare il caricamento di tutto il documento XML e riceverne uno pre-elaborato con i soli tag utilizzati dalla funzione del client. Un piccolo accorgimento per un approccio ancora migliore da tenere in considerazione durante lo sviluppo di applicativi analoghi.

L'altro esempio dell'anagrafica, mostra invece come una volta creato un sistema non racchiuso in singole pagine ma scorporato in un insieme di moduli, o sotto sezioni, sia semplice richiamare ed operare ogni operazione.

Per concludere, a prescindere dal sistema scelto, l'uso di classi addette a pilotare e svolgere i vari compiti è il metodo più consigliato per lo sviluppo di applicativi degradabili o che prevedono implementazioni future di AJAX.

Ti consigliamo anche