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
Eseguire attività basate su eventi con Azure Container Jobs
Utilizzare i nuovi piani dedicati di Azure Container Apps
Gestire server e pc on premise con Azure Arc
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Creare moduli CSS in React
Utilizzare la libreria Benchmark.NET per misurare le performance
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Specificare il versioning nel path degli URL in ASP.NET Web API
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
I più letti di oggi
- Creare dei grafici con OWC
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- Speciale ADO.NET: accesso ai dati con il .NET Framework
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare la direttiva ngSrc di AngularJS per ottimizzare il caricamento delle immagini
- Utilizzare i collapse di Bootstrap 4
- Caricare i dati di configurazione allo startup di un'applicazione Angular