Ogni versione di Windows Azure è sempre stata accompagna da una versione del SDK per .NET, che include utility e librerie per accedere ai servizi, in particolare quelli REST, più agevolmente e in modo tipizzato. Queste librerie però sono basate sul .NET Framework completo, e quindi sfruttabili da applicazioni WPF, WinForm o ASP.NET, ma non dalle Windows Store app, che sono basate su WinRT e su un sottoinsieme del .NET Framework.
Da poco tempo però sono disponibili una versione specifica delle librerie, che ci permetto di interrogare gli storage di Windows Azure, anche da una Windows Store. Sebbene tali librerie siano disponibili tramite NuGet, non sono ancora confezionate correttamente per WinRT, perciò le dobbiamo scaricare manualmente dal seguente indirizzo
https://github.com/downloads/WindowsAzure/azure-sdk-downloads/Microsoft.WindowsAzure.Storage-for-win8.v1.8.zip
La libreria si divide in due componenti: uno managed con estensione .dll e uno nativo, con estensione .winmd. Dobbiamo referenziarli entrambi, soprattutto quello winmd, che contiene le API base.
Le classi messe a disposizione si utilizzano in modo del tutto simile a quelle del .NET Framework. La differenza sta nell'introduzione dei metodi asincroni. Le funzioni che posso introdurre latenza, infatti, restituiscono un IAsyncAction, che, in pieno rispetto delle politiche di WinRT, ci permettono di aspettare, tramite await, l'esecuzione della richiesta.
In questo script, per esempio, carichiamo un file testuale sulla root container dello storage di sviluppo.
var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write("Test!"); writer.Flush(); stream.Position = 0; // Preparo l'account di sviluppo var account = CloudStorageAccount.DevelopmentStorageAccount; // Creo il client per i blob CloudBlobClient client = account.CreateCloudBlobClient(); // Riferimento al contenitore $root dello storage CloudBlobContainer root = client.GetRootContainerReference(); // Riferimento al file CloudBlockBlob blob = root.GetBlockBlobReference("test.txt"); // Carico in asincrono lo stream await blob.UploadFromStreamAsync(stream.AsInputStream()); new MessageDialog("Upload terminato").ShowAsync();
Possiamo notare, inoltre, che i metodi che necessitano di byte, richiedono i tipi IOutputStream e IInputStream di WinRT, perciò nell'esempio utilizziamo l'extension method AsInputStream per convertire lo Stream managed verso il tipo WinRT.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione dei nomi con le regole @layer in CSS
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare una libreria CSS universale: Cards
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Gestione file Javascript in Blazor con .NET 9
Eseguire query in contemporanea con EF
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Introduzione ai web component HTML
Utilizzare Azure Cosmos DB con i vettori
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Il nuovo controllo Range di Blazor 9
Migliorare la scalabilità delle Azure Function con il Flex Consumption
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il pattern matching per semplificare le espressioni
- 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!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare requestAnimationFrame per animazioni fluide