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>\AppData\LocalLow\Microsoft\Silverlight\is
- Windows XP: C:\Documents and Settings\<Usuario>\Local Settings\Application Data\Microsoft\Silverlight\is
- 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:
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