Cosa sia Ajax ormai non dovrebbe essere più un segreto per nessuno, e chi avesse ancora dubbi può trovare soddisfazione con qualche buona lettura.
In questo articolo invece iniziamo ad esaminare le diverse librerie nate per sfruttare questa tecnica con ASP.NET e proiettare le nostre applicazioni verso il WEB 2.0.
Come funziona Ajax con .NET?
L'esperienza di programmazione ASP.NET, soprattutto quella visuale che sfrutta componenti precostituiti, da un approccio di 'alto livello' e se è vero che è molto comune iniettare JavaScript all'interno di controlli e Web Form, non sempre un buon programmatore ASP.NET conosce davvero a fondo anche lo scripting lato client.
Inoltre bisogna considerare che piattaforma stessa rende problematico implementare funzionalità Ajax.
Per risolvere tutto questo Ajax viene programmato indirettamente, ovvero programmando componenti che incapsulano il "difficile" motore Ajax;
Questi componenti intercettano il tipico postback (o nel caso di .NET 2 anche il cross postback) delle Web Form e lo manipolano attraverso specifici metodi e proprietà;
Gli strumenti
Prendiamo quindi in esame alcune delle librerie più importanti che forniscono componenti o soluzioni per creare applicazioni in stile RIA senza dover modificare troppo il nostro modo di lavorare con ASP.NET.
Queste librerie vengono anche denominate Hijax, ennesimo termine informatico coniato dall'ennesimo guru, Jeremy Keith, che fonde i termini "hijack" (in inglese: "intercettare") ed appunto Ajax.
Possiamo dividere le librerie Hijax in due categorie:
- librerie con cui è più semplice per effettuare un restyling di applicazioni già esistenti oppure per una programmazione più 'soft' rivolta a quegli sviluppatori che non hanno tempo da perdere. Ad esempio:
- ComfortAsp
- MagicAjax
- librerie più indicate per la creazione di applicazioni ex-novo ovvero partendo da zero. Ad esempio:
- Ajax.net
- ASP.NET Ajax (Atlas)
- Anthem.net
Per fornire un paragone più attento tra i diversi framework abbiamo ripreso gli elementi della tabella comparativa di Daniel Zeiss l'autore di ComfortAsp.
Nome | ComfortASP.NET | MagicAJAX.NET | Ajax.net | Anthem.net | ASP.NET Ajax (Atlas) |
---|---|---|---|---|---|
Versione | V 0.69 | V0.3.0 | (5.7.25.1) Beta per ASP.NET 2 (5.7.22.2) per ASP.NET 1.1 |
V1.3.2 | Beta 2 |
Autore / Software House | Daniel Zeiss | Argiris Kirtzidis | David Schwarz | Jason Diamond | Microsoft |
Home Page | link | link | link | link | link |
Licenza d'uso | Demo / Gratuita (richiesta registrazione) | Gratuita / Open Source | Gratuita / Open Source | Gratuita /Open Source | Gratuita |
Versioni ASP.NET supportate | 1.1/2.0 | 1.1/2.0 | 1.1/2.0 | 1.1/2.0 | 2.0 |
Browser Supportati | IE 6/7 Mozilla Opera |
IE 6/7 Mozilla Opera (non ufficialmente) |
IE 6 Mozilla |
IE 6/7 Mozilla Opera |
IE 6/7 Mozilla |
Come funziona? | Usa un 'Control Manager' per creare un postback invisibile all'utente | Utilizza un "MagicPanel" per l'aggiornamento AJAX | Utilizza XmlHttpRequest tramite un proxy creato a runtime | Nuovi controlli con funzionalità AJAX | Diversi approcci:
* Diretta programm. AJAX * Nuovi controlli con funzionalità AJAX |
Interventi minimi richiesti sul codice | 1) Aggiungere HttpHandler e sezione di Configurazione nel web.config
2) (opzionale) Componente Manager Control programmabile in maniera dichiarativa |
1) Aggiungere MagicAjaxModule in web.config
2) inserimento di determinate aree della pagina nel controllo "AjaxPanel" |
1) aggiungere un HttpHandler
2)Marcare ogni metodo web come |
Utilizzo dei controlli Anthem | 1) Componente Script Manager programmabile in maniera dichiarativa
2) inserimento di determinate aree della pagina nel controllo "UpdatePanel" |
Il benchmark
Come supporto alla scelta della soluzione più adeguata ho messo sul banco di prova tre dei framework citati, sottoponendoli ad un "test di Tracing". Ho calcolato il tempo impiegato nel caricare il GridView
ed il DetailView
.
Il tracing che ho utilizzato è 'fatto in casa' perché i componenti Ajax che abbiamo preso in esame intercettano il postback e non lo rendono disponibile al Tracing implementato nativamente da .NET 2.0
Naturalmente è un test solo indicativo perché non calcola il volume dei dati manipolato dall'applicazione, la complessità totale delle pagine etc.Il test è stato effettuato con Internet Explorer 7 su Windows XP Pro Services Pack 2, Server IIS 6 ed il carico di lavoro era medio.
Anthem.net
Nei tre tentativi effettuati Anthem.net mediamente impiega 30/40 ms per caricare il GridView
ed il DetailsView
(vedi immagini).
Rispetto alla versione senza Ajax l'incremento è notevole è generalmente il componente si rivela non velocissimo, nel primo test ad esempio il caricamento ha impiegato più di un secondo.
ComfortAsp
Questo componente impiega circa 200 ms per caricare risultando il più lento tra quelli presi in esame e non viene supportato il tipico Tracing di Asp.net (vedi immagini).
MagicAjax
Non mi è stato possibile scrivere il tipico esempio nel quale un bottone popola il GridView
che, ha sua volta, popola il DetailsView
perché il postback Ajax viene perso quando viene premuto il link Select
del GridView
.
Questo componente si è rivelato il più veloce di tutti impiegando circa 20 ms (vedi immagini).