DarioSantarelli.Blog("UgiDotNet");

<sharing mode=”On” users=”*” />
posts - 176, comments - 105, trackbacks - 3

My Links

News


This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights.




Tag Cloud

Archives

Post Categories

My English Blog

Appunti sull' Isolated storage di Silverlight 1.1

Per 'Isolated storage' in Silverlight si intende un meccanismo di memorizzazione lato client (non molto trasparente nel comportamento in verità), basato sul più generale Isolated Storage del Framework .NET. Realizzato tramite una semantica cookie-like per applicazioni con trust parziale,espone delle API che permettono di accedere ad un FileSystem virtuale ed ai relativi Stream di lettura/scrittura su file.
Da un punto di vist pratico, ci sono diverse limitazioni a cui dobbiamo fare attenzione quando utilizziamo il sistema di "Isolated Storage" in Silverlight dal momento che esso è stato concepito per rendere più sicuro possibile l'accesso alle risorse lato client:

  • Ad ogni applicazione Silverlight viene allocata una propria porzione di spazio di memorizzazione condiviso tra tutti gli assembly nella stessa applicazione.
  • Lo spazio totale di allocamento per ciscuna applicazione non può superare 1MB
  • Ogni applicazione è identificata da un URI univoca fornita dall'host (attualmente viene utilizzata la directory virtuale), da mantenere chiaramente consistente al fine di garantire sempre lo stesso spazio di storage ad ogni esecuzione.
  • Gli utenti dell' Isolated storage sono considerati "low-trusted" e non hanno il permesso di accedere al file system fisico.
  • Le API sono del tutto simili a quelle delle classi File/Directory di System.IO e permettono sia l'enumerazione che la manipolazione di File e Directory nel file system virtuale.

Per iniziare a sviluppare con l'Isolated Storage di Silverlight basta tener presente due classi del namespace System.IO.IsolatedStorage, disponibili a partire dalla versione 2.0 del Framework .NET:

Vediamo un esempio su come creare , accedere e cancellare un file nell'Isolated storage:


using System.IO.IsolatedStorage;
...
const string ISOLATED_FILE_NAME = "Test.txt";    
using (IsolatedStorageFile UserStore = IsolatedStorageFile.GetUserStoreForApplication())
{
 
using (IsolatedStorageFileStream UserStream = new IsolatedStorageFileStream(ISOLATED_FILE_NAME, FileMode.Create, UserStore))
 
{                       
   
using (StreamWriter writer = new StreamWriter(UserStream)) writer.Write("Ciao Mondo.");                                                   
 
}

  using (IsolatedStorageFileStream UserStream = new IsolatedStorageFileStream(ISOLATED_FILE_NAME, FileMode.Open, UserStore))
 
{
  
using (StreamReader reader = new StreamReader(UserStream)) 
   { 
    
string read_string = reader.ReadLine(); 
  
}                                                                                                                          
  }
 UserStore.DeleteFile(ISOLATED_FILE_NAME);   
}   
     

Il metodo GetUserStoreForApplication()  permette di ottenere l'Isolated Storage dell'utente in corrispondenza dell'application identity assegnato dall'host al codice chiamante. 
La Directory di lavoro per ciascun utente e per ciascuna applicazione viene nascosta all'interno del file system fisico. Inoltre, ad ogni identificatore univoco fornito dall'host si riferirà una differente directory di root, associando di fatto a ciascuna applicazione il suo file system virtuale.
La gestione dell' organizzazione nascosta delle cartelle è chiaramente identica a quella prevista dal Frameowrk .NET. Per questi ultimi due motivi è' dunque obbligatorio (e non poteva essere diversamente) utilizzare percorsi assoluti per referenziare file nell'Isolated Storage di Silverlight.

 Technorati tags: *Silverlight, *IsolatedStorage

Print | posted on lunedì 8 ottobre 2007 17:33 | Filed Under [ Silverlight ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET