Tra i servizi che la piattaforma Windows Azure mette a disposizione vi sono le table: un nuovo modo di salvare informazioni tabellari sfruttando REST. La particolarità delle table è il fatto che queste sono pensate per scalare, perciò, a differenza di un motore RDBMS le informazioni non sono relazionali, ma sono memorizzate e frammentate in base a chiavi di partizionamento.
Sono, quindi, l'ideale per memorizzare grandi quantità di informazioni che però non debbono necessariamente essere interrogate con query che le coinvolgono per intero. In applicazioni ASP.NET trovano un uso appropriato per l'implementazione di provider dedicati agli utenti, ai loro ruoli e alla loro profilazione.
All'indirizzo http://watoolkitwp7.codeplex.com è possibile trovare un'implementazione dei provider di ASP.NET basati su Windows Azure, contenuti nella libreria AspProviders. Il suo utilizzo è piuttosto semplice, perché le table non richiedono una definizione della struttura, ma sono i dati stessi a determinarla. Una volta referenziato AspProviders.dll occorre prima di tutto configurare il provider nel web.config:
<system.web> <membership defaultProvider="TableStorageMembershipProvider" userIsOnlineTimeWindow="20"> <providers> <clear /> <add name="TableStorageMembershipProvider" type="Microsoft.Samples.ServiceHosting.AspProviders.TableStorageMembershipProvider" applicationName="WindowsPhoneCloud" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership> </system.web>
L'implementazione del provider legge dalle impostazioni del ruolo la stringa di connessione agli storage, ma è possibile modificare il metodo AspProvidersConfiguration.GetStorageAccount per far sì che questo legga dal web.config, permettendo di usare il provider anche on premises su un proprio server. Supponendo di essere in un web role, si definisce la stringa di connessione nel file cscfg:
<ServiceConfiguration serviceName="WindowsPhoneCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*"> <Role name="WindowsPhoneCloud.Web"> <Instances count="1" /> <ConfigurationSettings> <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> </Role> </ServiceConfiguration>
A questo punto, non resta che usare le API di membership o sfruttare i controlli di login o creazione dell'utente, per accedere allo storage di Windows Azure. Per il suo funzionamento verrà creata automaticamente una tabella di nome secMemberphip.
La cosa interessante da notare è che la chiave di partizionamento usata è [Applicazione]+[Utente] e questo fa sì che il provider possa essere usato per più applicazioni e possa scalare aggregando le informazioni per utente, garantendo maggiore velocità nella ricerca delle stesse. Nella libreria infatti sono presenti anche implementazioni per il provider di role, profiler e session.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Creare alias per tipi generici e tuple in C#
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Implementare il throttling in ASP.NET Core
What's new in Azure Functions and Extensions
Semplificare il deployment di siti statici con Azure Static Web App
Verificare la provenienza di un commit tramite le GitHub Actions
Potenziare Azure AI Search con la ricerca vettoriale
Cambiare la chiave di partizionamento di Azure Cosmos DB
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare delete massive con Entity Framework Core 7
Elencare le container images installate in un cluster di Kubernetes
I più letti di oggi
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Ottimizzazione dei block template in Angular 17
- Paginare i risultati con QuickGrid in Blazor
- Ed infine anche il calendario :)
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!