ATLAS: La potenza di ASP.NET 2.0 al servizio di AJAX

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

WebService

Il RunTime di ATLAS è in grado di creare proxy Javascript per invocare WebService occupandosi anche della serializzazione e deserializzazione dei dati scambiati con il server. Questo significa che anche se il WebService accetta in input, o restituisce, parametri complessi quali classi, strutture o Array, non ci si deve preoccupare di come inviare i dati, ma solo di come utilizzarli.

Essendo i metodi invocati in asincrono, si deve fornire un callback per indicare quale metodo si deve occupare di elaborare la risposta del server; oltre al metodo che accetta la risposta, si possono utilizzare altri due metodi da invocare quando, rispettivamente, la chiamata va in errore o in timeout offrendo, quindi, un controllo più granulare sullo stato dell'applicazione e, di conseguenza, una maggior sensazione di interattività all'utente.

WEB SERVICE:

[WebMethod]
public Dimension ComplexMethod(Dimension data) {
  Dimension result = new Dimension();
  result.Height = data.Width;
  result.Width = data.Height;
  return result;
}

JAVASCRIPT:

function complexClick(sender, eventArgs) {
  var obj = new Object();
  obj.Width = new Sys.UI.TextBox($("txtWidth")).get_text();
  obj.Height = new Sys.UI.TextBox($("txtHeight")).get_text();
  DefaultService.ComplexMethod(obj, completeComplexCallback, timeoutCallback, errorCallback);
}

function completeComplexCallback(response) {
  var lbl = new Sys.UI.Label($("lblComplex"));
  lbl.set_text("height is: " + response.Height + "\r\nWidth is :" + response.Width);
  var lblErr = new Sys.UI.Label($("lblError"));
  lblErr.set_text("");
}

function timeoutCallback(response) {
  var lbl = new Sys.UI.Label($("lblError"));
  lbl.set_text("time out");
}

function errorCallback(result, response) {
  var lbl = new Sys.UI.Label($("lblError"));
  lbl.set_text("Error: " + result.get_message() + "\r\nStackTrace: " + result.get_stackTrace());
}

ATLAS offre dei WebService già integrati per esporre le Membership e Profiling API. Per il Profiling esiste una corrispondenza quasi totale tra le API pubblicate e quelle disponibili sul provider, mentre per le Membership viene pubblicato solo un subset, ovvero le API che permettono la validazione delle credenziali di accesso, il login ed il logout.

MEMBERSHIP:

function loginClick(sender, eventArgs) {
  Sys.Services.AuthenticationService.login("UserName", "Password", false, onLoggedIn);
}

function onLoggedIn(result) {
  alert(result);
}

PROFILING:

function pageLoad() {
  Sys.Profile.set_autoSave(false);
  Sys.Profile.loaded.add(onProfileLoadComplete);
  Sys.Profile.saved.add(onProfileSaveComplete);
  Sys.Profile.load();
}

function onProfileLoadComplete() {
  alert(Sys.Profile.properties.PropertyName);
}

function saveClick(sender, eventArgs) {
  Sys.Profile.properties.PropertyName = 1000;
  Sys.Profile.save();
}

function onProfileSaveComplete(response) {
  alert('Profilo salvato');
}

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC