Chiamate veloci al server

di: Angelo Ranucci     27 Giugno 2006

Quando pensiamo ad una applicazione web non possiamo non tener conto dei problemi legati allo scambio di informazioni tra client e server. Possiamo cercare di rendere il più snello possibile questo flusso di dati evitando ad esempio un numero eccessivo di postback.

È anche a partire da considerazioni come queste che si sono sviluppate librerie AJAX come ATLAS per ASP.NET

Con ASP.NET 1.x, quindi, per superare il problema derivante dai continui postback, si impiega l'oggetto Microsoft XMLHTTP ActiveX che serve ad inviare richieste ai metodi lato server, da funzioni Javascript lato client. In ASP.NET 2.0 questo processo è stato semplificato con l'introduzione del Client Callback Manager.

Il Client Callback Manager di ASP.NET 2.0 fornisce la possibilità di invocare una funzione o un metodo lato server di una pagina web senza effettuare l'aggiornamento del browser. Affinché funzioni il Client Callback Manager, il browser naturalmente deve supportare l'XMLHTTP.

Il Client Callback Manager può quindi essere usato per aggiornare singoli controlli o per la validazione o anche per inviare i dati di un form senza inviare tutta la pagina. Il callback avviene attraverso script Javascript che inviano e ricevono dati sotto forma di flussi XML.

Quindi un evento che si verifica sul client, gestito da uno script presente sul client, può inviare una richiesta di processamento al server in modo asincrono, senza causare un postback.

Il server possiede alcuni metodi che ricevono la richiesta del client, la processano ed inviano la risposta. Infine, lato client, viene ricevuta ed elaborata la risposta del server.

La comunicazione fra le due parti avviene attraverso una stringa che contiene sia il comando da eseguire, sia i dati da inviare o ricevere.

Implementare il Client Callback Manager

Per usufruire del Client Callback Manager dobbiamo implementare l'interfaccia ICallBackEventHandler nella nostra pagina. Il che significa aggiungere l'interfaccia alla dichiarazione della classe.

Implementare l'interfaccia ICallbackEventHandler

public partial class _Default : System.Web.UI.Page, ICallbackEventHandler

A questo che dobbiamo realizzare concretamente i metodi dell'interfaccia:

  • RaiseCallbackEvent
  • GetCallbackResult

RaiseCallbackEvent() è invocato quando il client invia una richiesta al server. Questo metodo si occupa di leggere ed interpretare la stringa inviata dal client per poi eseguirne il comando con i dati inviati.

GetCallbackResult() è invocato dopo RaiseCallbackEvent() e restituisce la stringa da inviare al client come risposta della richiesta effettua.

Abbiamo poi bisogno di una stringa, che possiamo chiamare 'callbackStr', da utilizzare lato client e che conterrà il codice Javascript per lo scambio dei dati con il server. Questa stringa deve essere dichiarata pubblica e valorizzata con il metodo GetCallbackEventReference della classe ClientScriptManager.

La firma completa del metodo è la seguente:

GetCallbackEventReference(Control control, string argument, string clientCallback, string context, string errorCallback, Boolean async).

I parametri di GetCallbackEventReference sono i seguenti:

  1. Control control è il controllo che implementa il RaiseCallbackEvent. Se il metodo è implementato nella pagina, il riferimento sarà this;
  2. string argument è un valore che viene inviato al RaiseCallbackEvent attraverso il parametro eventArgument;
  3. string clientCallback è il nome del gestore di eventi lato client che riceve il risultato inviato dal server;
  4. string context è un valore che identifica chi ha iniziato il callback;
  5. string errorCallback è il nome del gestore di errore sul client che riceve la risposta di errore dal server se questa si verifica;
  6. Boolean async è un valore booleano che specifica se i callback vanno eseguiti in modo asincrono.

Il metodo GetCallbackEventReference quindi serve a costruire il metodo Javascript lato client WebForm_DoCallback che viene utilizzato dai gestori di eventi sul client per effettura le chiamate al server.

Il Client Callback Manager raccontato a parole sembra più complicato di quello che in effetti è. Con l'esempio ci chiariremo meglio le idee e avremo modo di apprezzare questa tecnica.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

20 Febbraio 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto