Home Page Home Page Articoli La classe Profile di ASP.NET 2.0

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 Livello:
Grazie a questa classe finalmente non serve piu portarsi in giro i valori in questo modo, facendo continuamente una serie di cast, dato che la Session non si puo? tipizzare perche? generica.
Dal punto di vista tecnico se guardiamo la classe Profile una classe che eredita dalla classe System.Web.Configuration.ProfileCommon che estende ProfileBase e viene creata al volo dal Framework infatti se si va a vedere usando il ?vai a definizione? si viene diretti ad un file temporaneo di ASP.NET. Ma questo non ha molta importanza adesso, molto più importante è invece il fatto che sia direttamente configurabile da web.config.
Infatti per quanto riguarda un utilizzo immediato, che spesso è piu che sufficiente, l?unica cosa che si deve fare è aprire il tag profile in questo file (sempre piu' ricco di versione in versione ;-) e definirne le proprieta' come in questo esempio:



N.B. E' possibile che la versione di Visual Studio .NET che state utilizzando vi segnali degli warning sui Tag. Questo perchè è ancora in fase di Beta. La versione definitiva non dovrebbe presentare questo problema.

A questo punto è direttamente il motore di ASP.NET che ci rende disponibili questi valori per tutto il tempo della sessione. Da ora in poi bastera? gestire in lettura e scrittura le proprieta? a "livello di intellisense" nelle varie pagine dell?applicazione:



Che tipi di dati posso usare nel definire il mio "profilo utente"?
Sono ovviamente supportati tutti i tipi del Framework, ma si possono definire anche delle strutture direttamente a livello di config, o ancora piu interessante, tipi di oggetti che definiamo noi internamente o esternamente all?applicazione, l'importante è che si specifichi eventualmente il namespace dove si trova la classe (e quindi la dll sia sotto alla directory bin).
Nell'esempio precedente il tipo "indirizzo" è definito direttamente nel web.config mentre "Permessi" è 1a classe dell'applicazione definita nel file sotto la directory speciale "app_code" dove vanno le classi comuni come in figura:



A proposito di directory speciali, quando si utilizza il tag "profile" senza specificarne ulteriori attributi (quindi usando le predefinite di visual studio 2005) i file di database utilizzati dal motore vengono parcheggiati nella cartella "app_data" (nella BETA 1 in formato Access 2000 si chiama "aspnetdb.mdb" , dalla BETA 2 diventato SQL Express quindi ".mdf" dato che quest'ultimo permette di linkare un file di database "al volo").
Questo motore gestisce di default anche le altre caratteristiche come "Membership" o lo stato delle "Webparts" (come le visualizzazioni o le disposizioni delle varie zone all'interno delle pagine) e il tutto viene reso disponibile di default all'accesso successivo, senza preoccuparsi di salvare e caricarle.
Ovviamente si puo' decidere di modificarle o ripristinarle quando si desidera, senza preoccupazioni per ciò che riguarda il salvataggio in quanto si preoccupera' di tutto il Framework.

Come vengono memorizzati i dati?
La struttura del database è questa:



Ovviamente i link sono per ApplicationId e per userID ;-) ed internamente si arrangia lui a memorizzarli con dei caratteri separatori per lo schema e a serializzare in XML i valori come appare qui :



Tutto questo viene fatto e gestito dal Framework che integra il suo provider dedicato, e quindi lo sviluppatore si preoccupa solo di maneggiarne i valori.


Memorizzare le informazioni in un Database diverso da SQL Express
Di questo non c'e' da preoccuparsi perche' se non si vuole utilizzare il provider di deafult (nella BETA 1 è Access 2000 e SQL Express nella BETA 2) bensi altre basi dati dove memorizzare questi dati, bastera' farselo a mano facendo l'override di alcuni metodi come Initialize(), SetPropertyValues() ecc. spiegato nella documentazione MSDN
e specificare nel web.config all'interno del tag profile, l'attributo "defaultProvider" con il nome della classe e definirne all'interno il provider che probabilmente avra' bisogno di specificare anche la connectionString della base dati come in figura:



L'esempio sopra utilizza un database Access che era quello di default nella BETA 1 di Visual Studio 2005 che invece di dilettarsi a crearselo personalizzato si puo' tranquillamente scaricare ed utilizzare quello che viene dato da Microsoft stessa come starter-kit qui:

http://lab.msdn.microsoft.com/vs2005/downloads/starterkits/ ">Lab MSDN (ultimo esempio in baso)

Un link veramente consigliato ;-)

Un'ultima cosa da dire è che è possibile creare un profile anche per gli utenti anonimi, definendo all'interno delle proprietà l'attributo allowAnonymous="true", e addirittura è possibile specificare quale sara' il tipo di serializzazione che si vuole usare con il serializeAs="String" o serializeAs="Xml".

PRO:
- Svolge splendidamente il suo lavoro, permette di essere scalabili e facilmente espandibili.
- I valori sono disponibili automaticamente all'accesso dello stesso utente mentre la Session va riempita a mano.
- E? una classe con i valori tipizzati al contrario della Session che richiedeva dei cast.

CONTRO:
- Viene svolto un ottimo lavoro "dietro le quinte" ma l'implementazione di un provider personalizzato è laboriosa.
Voto medio articolo: 1.3 Numero Voti: 40

File allegati


137_ASPProfile.zip (60 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
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 | Difficoltà: | Commenti: 6
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