Windows Azure espone un endpoint HTTP di nome Table Storage che si basa sul protocollo OData per fornire un servizio scalabile basato su tabelle. Consumare questo endpoint con le API del .NET Framework è piuttosto semplice, perché è possibile sfruttare la libreria e le conoscenze di ADO.NET Data Services.
Grazie alle API managed è possibile consumare le tabelle attraverso un provider LINQ che semplifica ricerche, ordinamenti e interrogazioni, ma per motivi di prestazioni ogni query è sempre limitata a 1000 righe. Vi sono situazioni in cui però si necessita di mostrare o elaborare un numero superiore, ma per fare questo non è possibile aggirare il limite di ogni richiesta, ma bensì affidarsi a richieste continue che caricano 1000 record alla volta.
Per raggiungere questo obbiettivo viene in aiuto la classe CloudTableQuery che wrappa l'originale DataServiceQuery e gestisce automaticamente il caricamento a chunk, durante lo scorrere dell'enumeratore. Ipotizzando di voler sfogliare tutte le righe del log di Windows Azure, è sufficiente sfruttare l'extension method AsTableServiceQuery per ottenere il wrapper, come nel codice seguente:
// Preparo l'account
CloudStorageAccount account = CloudStorageAccount.DevelopmentStorageAccount;
// Creo il client per le tabelle
CloudTableClient tableClient = account.CreateCloudTableClient();
TableServiceContext tableServiceContext = tableClient.GetDataServiceContext();
// Preparo la query sulla tabella di log
DataServiceQuery<LogEntry> query = tableServiceContext.CreateQuery<LogEntry>("WADLogsTable");
// Wrapper per sfogliare tutte le righe
CloudTableQuery<LogEntry> cloudQuery = query.AsTableServiceQuery();
// Consumo il log
foreach (LogEntry entry in cloudQuery)
{
}Il wrapper fornito gestisce automaticamente anche i tentativi nel caso si verifichino errori di trasferimento e rende completamente trasparente il consumo dei dati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Mischiare codice server side e client side in una query LINQ con Entity Framework
Utilizzare una qualunque lista per i parametri di tipo params in C#
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Eseguire query in contemporanea con EF
Creare una libreria CSS universale: Nav menu
Path addizionali per gli asset in ASP.NET Core MVC
Creare un agente A2Acon Azure Logic Apps
Recuperare App Service cancellati su Azure
Anonimizzare i dati sensibili nei log di Azure Front Door
Controllare la telemetria con .NET Aspire
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Generare una User Delegation SAS in .NET per Azure Blob Storage
I più letti di oggi
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Inserire le news di Punto Informatico nel proprio sito


