di Marco BellinasoSe programmate in ASP.NET e vi tenete anche un minimo aggiornati (e ovviamente lo fate, altrimenti non vi trovereste in questo sito
) avrete sicuramente sentito parlare di AJAX (Asyncronous Javascript And XML) e Atals. AJAX è qualcosa che esiste da parecchi anni, anche se solo da un po' gli ho sentito appioppare questo nome. In pratica è la possibilità di usare Javascript lato client, assieme al componente XMLHttp, per inviare delle richieste a pagine sul server, ottenerne il risultato sotto forma di XML (ma anche stringa normale, con dei separatori custom se ci sono più informazioni), parserizzarlo in modo opportuno e sempre tramite javascript aggiornare la pagina corrente con le nuove informazioni recuperate. In pratica una sorta di aggiornamento parziale attuato senza che l'utente esegua dei postback. Esempi di utilizzo sono il rimpimento di una listbox di comuni quando l'utente sceglie una provincia da un'altra listbox, oppure la notifica di una nuova news o e-mail da leggere (come nella webmail di Libero). Come dicevo, la tecnologia non è certamente nuova, e si trova utilizzata molto pesantemente in diversi siti/applicazioni web. AJAX.NET è una libreria open source (infatti da qualche giorno è disponibile anche il suo sorgente) che permette di implementare molti di questi effetti semplificando parecchio il codice (sia lato client che lato server) necessario. Ne hanno già parlato diverse persone su diversi siti, quindi non mi dilungherò oltre.
AJAX è diventato molto più popolare da quando si è cominciato a parlare di Atlas, ovvero una tecnologia Microsoft che permetterà di semplificare drasticamente il lavoro necessario per implementare una serie di operazioni client-side molto avanzate. Tante funzionalità saranno impacchettate sotto forma di nuovi controlli server-side, quindi lo sviluppatore non dovrà far altro che trascinarli sulla pagina, impostare qualche proprietà, e premere F5 per provare il tutto. Leggete il post di presentazione di Scott Guthrie (e i commenti sotto, alcuni sono parecchio interessanti) per saperne di più. Atlas sarà presentato alla vicina PDC05, e dovrebbe essere rilasciato con ASP.NET 2.0.
Da quando si è cominciato a parlare di Atlas, tutti coloro che si occupano di ASP.NET i sono schierati da una parte o dall'altra: chi non vedo l'ora di avere Atlas tra le mani e riempire le proprie pagine con javascript che aggiorni qualcosa (qualsiasi cosa va bene
) e chi invece è scettico. Ad esempio, Daniele Bochicchio ieri ha scritto questo post aggregandosi decisamente al secondo gruppo. Daniele dice che quello che fa AJAX oggi (e quindi Atlas domani) non è standard, e non funziona su diversi client, tra cui i Pocket PC (e smartphone). Se ci infarcisono le pagine con roba non standard le renderanno inutilizzabili. Io sono decisamente d'accordo con quello che dice (del resto lui ne capisce di web, usabilità ecc.
), ma vorrei aggiungere qualcosa.
Con Atlas anche programmatori inesperti potranno creare con pochissimo sforzo effetti/funzionalità client-side avanzate. E' ragionevole pensare che molti ne abuseranno...diciamo la verità, è sempre bello impressionare un capo o un cliente con gli effetti speciali, no?
Certo poi magari viene fuori qualche rogna, ma poi...Questo atteggiamento costituisce decisamente un problema, è vero.
E' pur vero però che un programmatore con un po' di espierienza e serietà in più sarà in grado di capire quando una cosa serve a migliorare veramente l'usabilità, e quando invece la può minare, e decidere di conseguenza se, quando e come inserire AJAX all'interno delle proprie pagine. Aggiornare la lista dei comuni al cambiamento della provincia, è una cosa che ha decisamente molto senso, e la implementerei nella maggior parte delle situazioni. Controllare sul server se ci sono nuovi articoli, ogni 10 secondi, decisamente no!!! Anche perchè se uno si collega tramite GPRS magari va nella homepage di un sito e ci stà mezz'ora a leggere...spendendo molto più del previsto perchè magari dietro le quinte sono state effettuate 200 request/response per verificare la presenza di nuovi contenuti! E' vero anche il fatto che AJAX non è supportato da molti dispositivi, diventando quindi inutile per alcuni utilizzatori. Non solo, se una pagina può funzionare completamente SOLO tramite AJAX, allora la pagina può diventare addirittura inutilizzabile. Mi è piaciuta molto una frase di Daniele, che dice: "il progresso che uccide il progresso"...molto adatta alla situazione direi
Purtroppo Pocket IE è quello che è, e bisogna farci i conti (non a caso molti usano NetFront, che ha un miglior supporto per JavaScript, applet Java e frame). Non ho ancora provato se PIE è migliore in Windows Mobile 5 (i nuovi dispositivi che lo avranno on-board usciranno a partire da settembre/ottobre), ma dato che anch'io mi sono fatto convincere a comprare un i-mate JAM (con WM2003 SE) personalmente - come end-user - non mi cambierà nulla
Come sviluppatore invece non credo che la compatibilità con i palmari sia davvero un gran problema. Sono sempre stato dell'idea che un sito o anche una singola pagina fatta per un browser tradizionale spesso non sarà adatta per un palmare, senza opportune modifiche. Io consiglio spesso di creare due versioni diverse delle pagine principali del sito (homepage, pagina del singolo articolo/news, pagina dei contatti ecc.): la versione per palmare dovrà avere un menù semplicificato, niente immagini di sfondo, niente barre laterali, niente banner, niente javascript, niente frame, ecc. Alcune di queste cose si potrebbero attuare semplicemente applicando un diverso foglio di stile alla pagina, ma non tutte. Anche avere master page (in ASP.NET 2.0) diverse (da applicazre dinamicamente da codice) potrebbe essere un'ottima soluzione parziale. Nelle pagine per browser di alto livello userò AJAX, se serve, in quelle per PDA no. Semplice. Anche perchè, decidendo drasticamente di non utilizzare AJAX non dovrei utilizzare Javascript anche per tutti gli altri effetti grafici, quindi niente web part draggabili di ASP.NET, niente menu drop-down o treeview espandibili sul client, ecc. ecc. Suvvia, le web part draggabili sono troppo belle per essere cassate 
A proposito, volete un'idea di un software da sviluppare per fare i soldi? Che ne dite di una bella applicazionina ASP.NET che si agganci allo SharePoint locale e ne mostri i contenuti in forma semplice, senza tutto quel javascript e controlli ActiveX che usano, in modo da poter accedere alle informazioni aziendali anche da palmare o smartphone? Con il modello ad oggetti di SP si può fare senza troppo sforzo. Rendendo il tutto configurabile ne verrebbe fuori una bella cosetta.
Ah, quasi me ne stavo scordando: se veramente volete riempire l'applicazione di funzionalità in stile applicazione Windows...e il vostro target è una intranet...l'opzione di scrivere uno Smart Client è sempre più che valida! E troverete in Francesco un ottimo sostenitore 