Silverlight: El sistema de ficheros y configuraciones

Una de las grandes limitaciones que tiene Silverlight es el acceso a disco, esto es debido a su ejecución aislada dentro del navegador. Habréis leído que Silverlight 3 tendrá capacidades de ejecución offline y out-of-browser, el resultado será el mismo ya que funcionaría igual que si siguiera alojada en el navegador.

Por muchos motivos podemos querer persistir en local algunos datos que hemos generado o que nos hemos traído del servidor.

Para ello Silverlight nos propone el Isolated Storage (almacenamiento aislado) donde podemos guardar ficheros y crear una jerarquía de carpetas. Antes de seguir quería comentar donde se encuentran estos directorios en la máquina:

  • Windows Vista/7: C:Users<Usuario>AppDataLocalLowMicrosoftSilverlightis
  • Windows XP: C:Documents and Settings<Usuario>Local SettingsApplication DataMicrosoftSilverlightis
  • Mac OS X: /Users/<Usuario>/Library/Application Support/Microsoft/Silverlight/is

Dentro de esas carpetas lo organiza por grupos, definiendo un grupo por dominio (definiendo dominio como nombre de dominio, puerto y protocolo). De tal forma que los siguientes serían grupos diferentes:

En cambio los siguientes serían el mismo grupo:

La importancia de conocer estos grupos es que a cada grupo el Isolated Storage le va a asignar una cuota de espacio en disco. Por defecto esta cuota está establecida en 1.0 MB ya que para pequeñas configuraciones y un uso “standard” del Isolated Storage sería suficiente. Pero aún así, previo ser aceptado por el usuario esta se puede aumentar a voluntad del programador.

Pero ya ha llegado el momento de usarla. Principalmente tenemos dos clases con las que debemos jugar IsolatedStorageFile y IsolatedStorageSettings. La primera es para todo lo que he dicho hasta ahora acceso a disco, ficheros, carpetas, etc. IsolatedStorageSettings, en cambio, nos sirve para guardar objetos binarios.

El funcionamiento de ambas es muy sencillo, lo vamos a ver mejor con un ejemplo:

var store = 
IsolatedStorageFile.GetUserStoreForApplication();
using (var stream = store.CreateFile("Fichero.txt"))
using (var writer = new StreamWriter(stream))
{
writer.WriteLine("1");
writer.WriteLine("2");
}

Con la función IsolatedStorageFile.GetUserStoreForSite() podríamos obtener el Store del grupo o sitio. Y tras ejecutar el código, ahí tenemos el fichero:

image 

El store tiene muchos métodos a mayores, para comprobar si existe un fichero, ver y modificar la cuota, leer ficheros, crear directorios, etc.

En cambio con el IsolatedStorageSettings es mucho más simple:

IsolatedStorageSettings.ApplicationSettings["Fondo"] =
Colors.Blue;

También tenemos el SiteSettings donde podremos cambiar todas las propiedades a nivel de sitio.

Silverlight es bastante potente a nivel de sistema de ficheros, está limitado a su vez por la isla en la que encuentra,pero que debido a la anatomía de las aplicaciones Silverlight no debería de ser eso un problema.

Los comentarios son bienvenidos 😉

Follow me! http://twitter.com/eugenioestrada

Un comentario en “Silverlight: El sistema de ficheros y configuraciones”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *