Questo non vuol essere un altro post in cui mostrare snippet di codice e
nemmeno vuole essere una crociata pro o contro AJAX. Questo post ha l'unica
presunzione di voler focalizzare un aspetto dell'abuso di AJAX.
Di qualunque cosa si può abusare, anche delle cose buone e giuste, o
magari, più semplicemente, di quelle che in apparenza sembrano innocue. AJAX a
prima vista sembra di quest'ultima schiera anche perchè non c'è niente di nuovo
sotto il sole, magari qualle toolkit che facilita lo sviluppo, ma nulla di più
nè a livello architetturale, nè a livello tecnologico.
Ma a mio avviso si può
morire di AJAX (ma anche di Mastro Lindo se lo bevete la mattina prima di andare
al lavoro...). Alzi la mano chi non ha pensato al controllo di lunghi job in
asincrono subito dopo gli autocompletamenti tipo Google Suggests, come possibile
applicazione di AJAX. La morte sua come si direbbe.
Un attimo, avete mai provato i test della scimmia (la più idiota, ma a
suo modo efficace, metodologia di test delle GUI)? Quelli dove un pazzo
scatenato si mette a cliccare a destra e a manca "per vedere l'effetto che fa".
Uno dei (piccoli) vantaggi delle classiche vecchie web form standard è che "un
click = un post = un refresh completo", certo da ottimizzare in modo che la
pagina non stia a pensare troppo prima di eseguire il refresh, ma insomma ci
siamo capiti. In questa modalità i danni che una scimmia può causare in qualche
modo possono essere limitati.
Con AJAX il refresh può essere evitato, con effetti veramente carini da
vedere, e finchè ci si limita agli autocompletamenti va anche bene. Ma si corre
davvero il rischio di esagerare: AJAX.NET offre la possibilità con tre righe tre
di codice di passare "sotto il tappeto" come per magilla interi dataset in
maniera asincrona per esempio, o magari appunto la nostra bella applicazione web
fa un polling sullo stato di svariati job in esecuzione sul server.
In questi
scenari, con controlli "ajaxizzati" sparsi per la web form, provate a fare
il test della scimmia. Bè, io ho provato ed il risultato è stato che mi sono
dato un sacco di martellate virtuali sulle unghie dei piedi: chiamate che si
accavallano, comportamenti strani, desincronizzazione degli eventi causa-effetto
(non è detto che se clicco prima sul bottone A e poi sul B, l'effetto a video
sarà in ordine prima quello dovuto ad A e poi quello dovuto a B). Insomma un
guazzabuglio terrificante.
Non dimentichiamoci _mai_ che per l'utente il sistema è la GUI.
Morale della fiaba: AJAX, se abusato (e sottolineo abusato, nel senso che il
troppo stroppa, ma il giusto spesso dà quel giusto tocco in più), ci pone di
fronte a tutta una serie di veri e propri pericoli di cui necessariamente si
deve tenere conto (ad esempio disabilitando i controlli, proprio come nelle
windows form). Tutto ciò introduce, come se non ne avessimo già abbastanza,
problematiche che spesso rendono il controllo di coerenza di una web form un
autentico incubo, in uno scenario in cui la semplicità va a farsi benedire. E a
mio avviso in ambito web (ma non solo), la semplicità è un fattore di successo
delle applicazioni.
Saluti
powered by IMHO 1.2