Atlas & Ajax cosa sono ?
Atlas è il nome in codice dell'implementazione
AJAX per
ASP.NET di Microsoft.
AJAX acronimo di (
Asynchronous Javascript And XML) non è una cosa nuova, esiste da qualche anno, e "in soldoni" non è altro che l'uso intensivo dell'oggetto
XMLHttp che permette di scambiare dati con il server per evitare postback di pagina e roundtrip di molti di dati inutili.
Questa struttura sta alla base del funzionamento "intelligente" delle pagine Web che girano lato client, ovvero che non subiscono una rielaborazione da parte del server ad ogni postback ma necessitano solo di un aggiornamento delle parti che verranno effettivamente modificate.
Il meccanismo che prevedere l'utilizzo continuo della stessa pagina che viene inviata avanti e indietro dal server (
postback), può essere abbastanza fastidioso e soprattutto lento. Pensiamo ad esempio quando si fanno ordinamenti di griglie, si clicca su un menu poco popolato, o ancora quando si caricano nodi e sottonodi di treeview. La pagina dev'essere mandata indietro al server che dovrà per esempio cambiare semplicemente una riga di una griglia e rielaborare di nuovo tutti i vari controlli (esempio .ascx) e rimandarli indietro con notevole carico dalla parte del server oltre che di consumo di banda.
Nata da questa banale quanto sentita esigenza,
AJAX si è evoluta nel tempo, dando spunto a cose splendide come autocompletamento di TextBox, liste che si possono aggiornare automaticamente e mostrare una finestra di "caricamento" durante la navigazione.
Ci sono varie implementazioni di
Ajax, ne cito qui di seguito alcune fra le più famose:
Magic AJAX Ajax.NET oppure anche componenti già
AJAX Enabled come:
Backbase Telerik Rad Un interessante confronto fra le implementazioni più diffuse lo si può trovare qui:
Comparazione fra implementazioni AJAX Ad ogni modo, focalizzando il nostro approccio sulla tecnologia Microsoft, se qualcuno ha avuto la possibilità di vedere
Outlook Web Access di
Microsoft Exchange, avrà capito che certe cose esistono veramente, non sono solo sogni :-).
Outlook Web Access è a mio avviso un'applicazione ottima per tantissimi motivi, ha una sua serie di funzioni
Javscript che per Internet Explorer fanno veramente scintille ma purtroppo però solo per lui :-(
Atlas invece è stata pensata per essere
"crossbrowser" ossia per essere compatibili anche con i browser che con il tempo e a sgomitate si sono creati una quota di mercato come
Opera e
Firefox.
C'è da sottolineare che già grossi players stanno creando o convertendo parte delle loro soluzioni Web usando queste nuove tecnologie, qui di seguito riportiamo alcuni siti web che ne fanno uso:
Windows Live Hotmail.com (versione Live) Google Earth Google Mail (GMail) Yahoo! addirittura ha rilasciato un kit di librerie alternativo che fa uso anch'esso di
Ajax:
Yahoo! User Interface Library Microsoft aveva gia provato in passato con la proprietà
"SmartNavigation" che impostata a livello di
web.config permetteva di avere una sorta di navigazione intelligente, cioè prima di ricaricare tutta la pagina veniva fatta la richiesta e poi aggiornata la parte che era variata. Ci riprova ancora con qualcosa di più strutturato in
ASP.NET 2.0 con
ICallbackEventHandler ovvero permettere agli Usercontrol di riceve callback dal server...al momento comunque sono tutte cose che tralasciamo per andare invece più' a fondo nella parte "pratica" di
Atlas.
Dove posso effettuare il Download di Atlas ?
Attualmente per utilizzare
Atlas bisogna scaricare il template
"Atlas Blank Project VSI" January Release dal seguente indirizzo:
Atlas Template January 2006 che sfrutta la possibilità di
Visual Studio .NET 2005 di avere un template di progetto personalizzato da poter aggiungere completo di librerie etc. Dopo averlo installato sarà possibile cominciare a creare progetti
Atlas selezionando questa tipologia di progetto:
Per abilitare l'applicazione ad utilizzare anche l'
"Atlas Framework" (la parola "anche" non è a caso perchè comunque alcune parti si comporteranno in maniera del tutto standard se non racchiuse negli UpdatePanels) ovviamente si arrangia automaticamente il Template di progetto ma potrebbe essere utile saperlo fare magari proprio per implementare questa tecnologia per progetti che abbiamo gia sviluppato in precedenza. Vediamo come si fa.
L'architettura di Atlas
L'architettura di
Atlas è mostrata nell'immagine seguente:
Sostanzialmente ci sono da considerare 3 cose fondamentali:
- Microsoft.Web.Atlas.dllnella directory
bin si specifica questo
Assembly che si occupa "del lato server" diciamo, ovvero di renderizzare in maniera corretta i controlli che noi utilizziamo dalla Toolbox.
- Script Library [directory con dentro i file js]in questa cartella (attualmente 2 con 2 sottocartella Debug e Release) ci sta tutta la "parte client", dato che non dobbiamo dimenticare che
Atlas ci permette di programmare senza troppe problematiche, ma ad eseguire queste operazioni ci sarà sempre il nostro caro evecchio browser, quindi buona parte del lavoro verrà svolta
lato client tramite
Javascript.
- abilitare Atlas nel web.configbisogna configurare alcune cosette per il corretto funzionamento dell'applicazione, quelle che ci vengono date di default sono:
- dire all'applicazione che a processare le chiamate ai
Web Services sarà l'
Handler di Atlas e non l'
HttpHandler standard:
a) anche se giustamente il pacchetto
.vsi lo setta di default, noi lo possiamo anche togliere se non usiamo chiamate a
Web Services.
b) aggiungere alle pagine il supporto per Atlas:
Questo ci permette di poter aprire direttamente tag
"<atlas:.." senza referenziare niente infatti l'assembly che serve si trova sotto alla dir "bin" e quindi lo possiamo fare appunto configurandolo proprio qui.
Per comodità si può decidere di aggiungere anche nella Toolbox questi oggetti in modo da poter fare il
Drag&Drop per essere più veloce, quindi basta andare ad aggiungere il riferimento alla dll nella Toolbox e compariranno gli oggetti. In questo caso e possibile anche togliere questa sezione del web.config.
L'unica cosa da dire è che a questo punto diventa come un controllo normale e quindi assumerà la forma:
Personalmente preferisco usare tutte e due le cose insieme, ovvero avere gli oggetti nella Toolbox ma aprirli con tag
"<atlas:.." quando scrivo, perciò io aggiungo gli oggetti ma lascio anche la mappatura nel web.config.
Controlli Atlas, Prima versione
Dapprima si pensava di utilizzare degli oggetti “ad hoc” che incarnassero tutte le caratteristiche di questa architettura ed avessero le funzionalità richieste. Ad esempio si potevano utilizzare Lstbox , ListView etc, che avevano “comportamenti Atlas” con sintassi di questo genere:
Controlli Atlas, Seconda versione (attuale)
Questo modo di procedere però non era il migliore - ed infatti ben presto se ne sono accorti - in quanto obbligava i developers a conoscere nuove sintassi, le quali, se pur standard, avrebbero portato un eccessivo dispendio di tempo; nel caso poi di architetture esistenti, tale modo di procedere avrebbe portato a riscrivere e testare le applicazioni stesse.
Perciò serviva qualcosa di più "intuitivo" e facilmente "integrabile" con
ASP.NET, ed ecco che non tarda una release importante (
Milestone 1) con l'introduzione dell'approccio corretto :
lasciare sviluppare come si è sempre abituati normalmente con
ASP.NET solo che alcune zone che vogliamo rendere "intelligenti" si possono racchiudere dentro ad ad alcune
"zone" (panel).
Proprio l'
UpdatePanel della nuova release di
Atlas è il cuore di tutta l'architettura.
Posso infatti sviluppare un sito normalmente con tutte le mie conoscenze o comunque il codice server side che sono abituato a scrivere da
ASP.NET 1.1 in poi, e fargli usufruire dei meccanismi di
AJAX semplicemente racchiudendolo dentro ad un "pannello intelligente":
Oltre a questo oggetto sono però disponibili altri oggetti altrettando interessanti:
AutoCompleteExtender Fa parte della categoria "extender" cioè aggiungere caratteristiche ai controlli.
Questo si preoccupa di dare ad un controllo (tipicamente TextBox) il funzionamento della barra degli indirizzi di
Internet Explorer o
Google Suggest etc...
Funziona sostanzialmente facendo in modo che sia
Atlas a chiamare un metodo di un
Webservice che ritorni la lista dei valori da mettere sotto alla TextBox (renderizzato in HTML come tag
"<span...")
Per abilitare questo nel
web.config bisogna dire che sia affidato ad
Atlas la gestione delle chiamate ai
Webservice quindi come spiegato sopra
DragOverlayeExtenderForse la più sbalorditiva dal punto di vista dell'impatto visivo, ovvero il poter dare agli oggetti della pagina la possibilità di essere "fluttuanti" indipendentemente dall'impaginazione, con il semplice
Drag&Drop.
Se usata in combinata con il
ProfileScriptService permette di salvare anche nel proile la posizione degli oggetti in modo da ritrovarli al successivo accesso.
ProgressPanelOvvero l'area dove visualizzare tipicamente una gif di
"carimento" (ma potenzialmente qualsiasi codice HTML) che viene visualizzato il suo Template che si chiama
"ProgressTemplate", durante l'elaborazione
Javascript della pagina e nascosto appena terminato automaticamente dallo ScriptManager, senza aggiunta di alcun codice.
Se viene utilizzato utilizzando alcuni degli stili
CSS come per esempio
z-ndex,float, position etc...) si può mettere ovunque sulla pagina anche sopra agli altri controlli.
Un'ultimo appunto da tenere in considerazione è che questa non è l'unica maniera di operare, è infatti possibile usare
Atlas scrivendo il codice che estenda controlli HTML direttamente nel source della pagina. Attualmente però manca ancora di
Intellisense anche se penso sarà implementato al più presto, a mio avviso però quella che abbiamo visto rimane la maniera più agile di utilizzare questa tecnologia.
Pro
- Decisamente l'impatto che io definisco "emotivo" che ha questa tecnologia su chi la utilizza è molto forte, ovvero sembra quasi di avere su web l'applicazione classica win32.
- Inoltre da non sottovalutare anche la velocità in quanto le parti da rigenerare sono minori quindi con meno traffico di dati e meno carico di CPU sul Server.
- Microsoft sta spingendo molto su questa tecnologia e ormai ci sta abituando a queste funzionalità con l'ultima versione di
Hotmail, Live.com Virtualearth etc… ed anche parecchie SoftwareHouse come ad esempio
Infragistic, o la
Telerik si affidano sempre più su queste tipologie di componenti
Contro
- I browser per mobile spesso non hanno supporto per tutto questo codidce
Javascript ed infatti si comportano automaticamente come
ASP.NET normalissima ovvero facendo PostBack con caricamento classico.
- Alcune cose vanno ancora perfezionate tipo che se scade la sessione ovviamente non richiede la pagina di login ma sembra che non funzioni più o può capitare che dopo un pò di tempo smetta di funzionare.
- Bisogna stare attenti in ambienti
MasterPages con l'utilizzo delle
Web Parts per non fare conflitti tra le sezioni.
Sono comunque bug dovuti alle versioni ancora in fase di sviluppo che sicuramente verranno risolti al più presto con le versioni definitive.
Browser con supporto per Atlas/Ajax
Attualmente
Atlas funziona sui seguenti Browser:
- Internet Explorer
- Firefox/Mozilla
- Safari
Implementazioni future di Atlas
Si sta lavorando duramente a questa technologia (e chissa anche a quante altre :-) ma gia si vocifera che la prossima evoluzione sia la possibilità di avere l'
"InPlaceEditing" ovvero dare la possibilità a quegli oggetti come texbox di essere editate "al volo" per modificare, inserire o aggiornare contenuti nei Database remoti.
Alcuni Links Utili
Come non citare questi due siti come punto di riferimento per
ASP.NET e quindi in particolare anche di
Atlas:
Blog di Scott Guthrie, Microsoft PM di ASP.NET Blog di Nikhil Kothari Da tenere d'occhio anche il sito
Mix 2006 ovvero la prossima conferenza tecnica sul "web che verrà" (
Web 2.0) dove ovviamente si parlerà molto di
Atlas.