2 pagine in totale: <<Indietro 1 [2]
Perchè Membership API via AJAX?
A prima vista può sembrare inutile avere a disposizione delle API per l'autenticazione dal momento che è possibile fare la stessa cosa tramite un postback classico. Quest'affermazione è ancora più vera nei casi in cui si effettua un redirect ad una pagina di benvenuto per l'utente loggato.
Tuttavia va considerato il rovescio della medaglia: eliminando il postback, si ha risparmio di banda. Inoltre, in seguito al login, può essere richiesto di rimanere nell'ambito della stessa pagina con la necessità di aggiornarla con il nome dell'utente e con altre eventuali informazioni accessorie. Sfruttare il login via AJAX in questo tipo di scenario può portare ad un forte incremento dell'usabilità e quindi ad un conseguente miglioramento dell'applicazione.
Profile API
Le Profile API sono state introdotte per memorizzare i dati aggiuntivi di un utente che non siano strettamente collegati al concetto di Membership. Infatti, se dati come username, password ed email sono riconducibili ad un meccanismo di autenticazione, altri come nome, sesso, età o indirizzo sono più correlati all'idea di profilo.
Così come per le Membership API, anche per le Profile API è stato creato uno Script Service apposito che permette di leggere e salvare i dati: System.Web.Profile.ProfileService. Anche in questo caso, i metodi che sono pubblicati costituiscono solo una piccola parte delle funzionalità disponibili lato server, ma sono in grado di soddisfare comunque le esigenze in cui gli sviluppatori si imbattono nel 90% dei casi.
Anche in questo caso (come nel precedente) il primo passo è attivare il Web Service tramite web.config. All'interno dello stesso nodo visto precedentemente per le Membership API, si può inserire una sezione profileService tramite la quale attivare il servizio e stabilire quali proprietà del profilo possano essere rese disponibili al client in lettura e scrittura.
<profileService enabled="true"
readAccessProperties="Nome, Cognome"
writeAccessProperties="Nome, Cognome" />
Questa sezione è alquanto semplice:
- enabled: specifica se il servizio è abilitato o meno;
- readAccessProperties: specifica i nomi delle proprietà, separati da virgola, che possono essere pubblicate dal servizio;
- writeAccessProperties: specifica i nomi delle proprieta, separati da virgola, che possono essere modificate tramite il servizio.
La rimanente parte della configurazione per la Profile API viene gestita tramite i nodi usuali presenti nel web.config.
<profile enabled="true">
<properties>
<add name="Nome"/>
<add name="Cognome"/>
</properties>
</profile>
A questo punto non rimane che considerare il codice javascript necessario per accedere al Web Service dedicato al profilo dell'utente. Proprio perchè si utilizza un Web Service e la chiamata è asincrona, occorre invocare il servizio tramite il metodo load della classe Sys.Services.ProfileService ed impostare una funzione di callback che recuperi i dati tornati dal server e li utilizzi correttamente.
Sys.Services.ProfileService.load(properties, loadCompletedCallback, failedCallback, contextInfo);
I parametri rappresentano:
- properties: stringa contenente le proprietà da caricare;
- loadCompletedCallback: funzione di callback da invocare se l'operazione di retrieving è terminata senza errori;
- failedCallback: funzione di callback da invocare se l'operazione di retrieving ha riscontrato un errore;
- contextInfo: informazioni aggiuntive che vengono passate alla funzione di callback.
function btnLoadProfile_Click() {
Sys.Services.ProfileService.load(null, OnLoadCompleted, OnProfileFailed, null);
}
function OnLoadCompleted(numProperties, userContext, methodName) {
$get("txtNome").value = Sys.Services.ProfileService.properties.Nome;
$get("txtCognome").value = Sys.Services.ProfileService.properties.Cognome;
}
function OnProfileFailed(error_object, userContext, methodName) {
alert("Profile service failed with message: " + error_object.get_message());
}
Quando la funzione di callback utilizzato in caso di risultato positivo viene invocato, non vengono passati in input i valori delle proprietà trovate, bensì queste vengono memorizzate in una classe javascript tipizzata con i nomi dei dati appena ritrovati nel profilo; questa classe viene esposta tramite la proprietà properties della classe che si occupa della gestione del profilo Sys.Services.ProfileService. Come si vede nell'esempio, la classe esposta da properties contiene i campi Nome e Cognome che sono stati inseriti nel profilo dell'utente e pubblicati dal ProfileService di ASP.NET AJAX.
Questo approccio risulta molto comodo in quanto così facendo si ha a disposizione un oggetto pubblico da utilizzare senza bisogno di ricorrere a variabili dichiarate dall'utente per memorizzare sul client i dati del profilo.
Tra le feature delle Profile API c'è la possibilità di organizzare le proprietà in gruppi. Si pensi, ad esempio, all'indirizzo di una persona che può essere suddiviso in via, numero civico, CAP, città e stato.
<group name="Indirizzo">
<add name="Via"/>
<add name="Numero"/>
<add name="CAP"/>
<add name="Citta"/>
<add name="Stato"/>
</group>
...
<profileService enabled="true"
readAccessProperties="Nome, Cognome, Indirizzo"
writeAccessProperties="Nome, Cognome, Indirizzo " />
In questo caso l'accesso alle proprietà è leggermente diverso in quanto bisogna anche specificare il nome del gruppo di appartenenza.
$get("txtVia").value = Sys.Services.ProfileService.properties.Indirizzo.Via;
Come si è visto in precedenza, un profilo si può non solo leggere, ma anche modificare. Il procedimento è alquanto banale, in quanto basta modificare i valori del profilo tramite le proprietà viste sopra ed invocare successivamente il metodo save della classe Sys.Services.ProfileService.
Sys.Services.ProfileService.save(propertyNames, saveCompletedCallback, failedCallback, userContext);
I parametri che vanno passati al metodo sono identici a quelli visti per la fase di caricamento del profilo. Come si vede, non c'è bisogno di passare alcun valore relativo al profilo in quanto viene preso dalla proprietà properties con un notevole risparmo di codice.
Ovviamente questo sistema di salvataggio impone l'obbligo di recuperare prima le informazioni del profilo, in caso contrario viene generata un'eccezione dovuta alla mancanza dei dati.
Perchè Profile API via AJAX?
Poter accedere al profilo dell'utente non è certo una feature rivoluzionaria. Esistono già adesso applicativi che recuperano dati senza ricorere ad AJAX, leggendo i dati lato server e memorizzandoli in uno o più campi hidden. Tuttavia questo metodo ha l'inconveniente di obbligare lo sviluppatore a scrivere da una parte codice server per creare campi hidden e memorizzarci i dati e dall'altra codice javascript per trattarli.
Tramite la Profile API via AJAX il codice javascript da scrivere è veramente minimo, proponendo tra l'altro un approccio tipizzato che favorisce la leggibilità e ritorna molto utile in svariate situazioni.
Conclusioni
In questo articolo si è visto come ASP.NET AJAX introduca nuove opzioni per realizzare funzionalità legate agli utenti. Infatti, se da un lato non c'è niente di innovativo nell'utilizzare AJAX rispetto ad altre tecniche in uso adesso, dall'altro c'è l'indubbio vantaggio di una semplicità estrema di sviluppo e, più in generale, di un risparmio di risorse.
2 pagine in totale: <<Indietro 1 [2]
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!