Home Page Home Page Articoli Da AJAX ad Atlas nuove tecnologie per un Web di nuova generazione

Da AJAX ad Atlas nuove tecnologie per un Web di nuova generazione

Nell'ultimo periodo si è parlato molto di Atlas l'ultima tecnologia Microsoft per rendere le pagine web dinamiche, interattive e molto più attraenti, in modo da essere sempre più somiglianti a vere e proprie applicazioni Windows. Cominciamo a conoscere questa tecnologia per sapere cosa potremo fare nelle applicazioni ASP.NET di prossima generazione.
Autore: Matteo Raumer Livello:

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.dll
nella 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.config
bisogna 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

DragOverlayeExtender
Forse 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.

ProgressPanel
Ovvero 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.
Voto medio articolo: 4.1 Numero Voti: 7

File allegati


CSharp-Atlas-Ajax.zip (243 Kbyte)
Matteo Raumer

Matteo Raumer

Laurea breve in Ingegneria Elettronica presso l'Universita di Padova nel 2001, e nel febbraio 2009 un'altra triennale in Ingegneria Informatica. Da anni lavoro come programmatore .NET principalmente in C#, per migrare applicativi win32 in applicazioni ASP.NET. Ho sviluppato inoltre parecchia reportistica su Crystal Re... Profilo completo

Articoli collegati

Riordinare le righe di una GridView con AJAX
La GridView, un controllo molto potente e flessibile che però non può offrire tutto. Vediamo in questo articolo come estenderlo implementando meccanismi di reordering delle righe usando AJAX
Autore: Riccardo D'Aria | Difficoltà:
Membership, Role e Profile Provider personalizzati
Chi deve gestire in modo consistente autenticazione, gestione dei ruoli e profilazione degli utenti di un sito Internet non può non conoscere i Providers (MembershipProvider, RoleProvider e ProfileProvider) offerti da ASP.NET. Vediamo che cosa sono, a cosa servono e come si costruiscono.
Autore: Marco Rossi | Difficoltà: | Commenti: 13
La classe Profile di ASP.NET 2.0
In un'applicazione ASP.NET è cosa comune avere la necessità di gestire alcune proprietà che caratterizzino ogni utente, sempre disponibili tra le varie pagine. L'approccio con la versione 1.1 del Framework si basava sull'uso dell'oggetto Session. Con la versione 2.0 il Framework ci mette a disposizione la classe Profile.
Autore: Matteo Raumer | Difficoltà: | Commenti: 3 | Voto:
Le WebParts in ASP.NET 2.0
Scopriamo le WebParts, i nuovi Web Controls di ASP.NET 2.0 che consentono di personalizzare sia i contenuti che l'interfaccia grafica delle nostre applicazioni Web, tecnologia giù utilizzata ampiamente nel prodotto Sharepoint Portal Server 2003.
Autore: Marco Caruso | Difficoltà: | Commenti: 6 | Voto:
Scopriamo l'oggetto Gridview di ASP.NET 2.0
Nonostante la Datagrid di ASP.NET 1.x offrisse già molta flessibilità, con il Framework 2.0 è stato introdotto un nuovo oggetto, la Gridview, erede della DataGrid che, migliorata e potenziata, faciliterà di molto la vita agli sviluppatori Web.
Autore: Giovanni Ferron | Difficoltà: | Commenti: 1 | Voto:
Configurazioni Web con ASP.NET 2.0
Vediamo come cambia e come viene semplificata la configurazione in ASP.NET 2.0 attraverso i nuovi controlli di login, il tool d'amministrazione e l'amministrazione attraverso Internet Information Server (IIS)
Autore: Marco Caruso | Difficoltà: | Commenti: 4
Più facile con il .NET Framework 2.0 :-)
Da quando ho cominciato a "smanettare" per arrivare poi a "lavorare" con il framework 1.x, mi sono trovato subito a mio agio con gli elementi che il .NET metteva a disposizione, ma per alcune cose già sapevo che avrei dovuto lavorare. Con la versione 2.0 del Framework alcune di queste sono state già inserite semplificandomi ulteriormente la vita...
Autore: Matteo Raumer | Difficoltà: | Commenti: 1
ASP.NET Themes e Skins con Visual Studio .NET 2005
Una delle novità introdotte in Whidbey è la possibilità di applicare dei Temi (Themes) alle nostre applicazioni o pagine Web e addirittura applicare delle Skins singolarmente ai controlli delle Web Forms in modo estremamente flessibile e rapido.
Autore: David De Giacomi | Difficoltà: | Commenti: 3 | Voto:
Anteprima su Visual Studio .NET 2005
Visual Studio .NET Whidbey, ossia la prossima versione di Visual Studio .NET basato sul Framework 2.0 è ancora in cantiere ma grazie all'Alpha rilasciata agli sviluppatori in occasione della PDC 2003 possiamo vedere quali novità ci aspettano. Eccone alcune!
Autore: David De Giacomi | Difficoltà: | Commenti: 2
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5