La piattaforma Windows Azure oltre ai servizi di storage offre la possibilità di eseguire codice e di ospitare applicazioni internet attraverso i role. Sono di due tipologie, web e worker, e nella maggior parte dei casi si poggiano a SQL Azure piuttosto che hai i servizi di storage per memorizzare informazioni, gestire code o mantenere informazioni in forma tabellare.
Di fatto i role sono macchine virtuali Windows Server 2008 dedicate esclusivamente ad ospitare il codice installato attraverso i pacchetti di deployment e teoricamente è possibile accedere al suo file system, al registro e a tutte le informazioni di sistema. Tutto questo in realtà non è possibile per le restrizioni di scrittura imposte dal sistema, anche se il ruolo è stato configurato per funzionare in Full trust, dove è consentito accedere in sola lettura alle cartelle di sistema o alla directory dell'applicazione.
Per ovviare a questo problema in Windows Azure sono disponibili i local storage, cartelle di cui si ha il pieno controllo e dove è possibile inserire tutti i file e sotto cartelle che si necessitano. Per sfruttarli occorre prima di tutto configurare nelle impostazioni del ruolo (pannello local storage), una lista di storage identificati dal nome, dallo spazio che hanno a disposizione e dal flag che indica se lo storage viene svuotato quando il ruolo viene reciclato.

In questo modo il sistema riserva uno spazio riservato su disco raggiungibile attraverso uno specifico percorso, ottenibile con il metodo statico RoleEnvironment.GetLocalResource. Effettuata questa chiamata si ottiene un oggetto LocalResource la cui proprietà RootPath restituisce l'intero percorso alla directory. Con esso è possibile combinare le classi di System.IO e in particolare File e Path per creare percorsi, scrivere file ecc, come nell'esempio seguente.
string path = RoleEnvironment.GetLocalResource("test").RootPath; string file = Path.Combine(path, "test.txt"); File.WriteAllText(file, "Ciao!");
Il metodo è funzionante anche nell'ambiente di sviluppo e restituisce un percorso all'interno dell'appdata dell'utente o in C:\Resources\directory\xxx se avviato in the cloud. Gli storage sono, ad ogni modo, pensati per fornire velocità nella scrittura e lettura delle informazioni, ma non adatti per esporre informazioni agli utenti, ruolo più adatto, anche in termini di scalabilità, agli storage blob di Windows Azure. Non è infatti assicurato che il contenuto dello storage non venga perso, a causa di sospensioni o rimozioni dei deployment. Infine occorre prestare attenzione ai limiti dello storage locale e a quelli dell'intera macchina, variabili in base alla dimensione del ruolo. Per questo motivo si rimanda al sito ufficiale:
http://msdn.microsoft.com/en-us/library/ee814754.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Copilot con Azure Cosmos DB
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Generare una User Delegation SAS in .NET per Azure Blob Storage
Simulare Azure Cosmos DB in locale con Docker
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Combinare Container Queries e Media Queries
Utilizzare i primary constructor di C# per inizializzare le proprietà
Disabilitare automaticamente un workflow di GitHub (parte 2)
Creare una libreria CSS universale: i bottoni
Creare una libreria CSS universale - Rotazione degli elementi
Evitare il flickering dei componenti nel prerender di Blazor 8
Gestione dei nomi con le regole @layer in CSS