Skip to main content

Ultimos Posts:

Los ficheros almacenados en el Isolated Storage se pierden !!
Fecha entrada: Apr 2009 Palabras Clave: Silverlight; VS 2008; .net framework 3.5; Visual Studio 2008;
Resumen post:

Desarrollando mi herramienta para editar diagramas de bases de datos (basada en Silverlight), me encontre con que necesitaba darle al usuario la opción de poder guardar diagramas en su maquina local (por ejemplo... el usuario pierde su conexión con internet y necesita guardar los cambios en algún sitio). Esto en un aplicacíon desktop no representa ningún problema pero con Silverlight nos encontramos que corre dentro de un sandbox, esto es... no puede acceder al sistema de ficheros de la maquina local (si no menuda podría liarse, ¿ os acordáis de los famosos ActiveX ? :-)). Una opción para solucionar esto es hacer un apaño mediante javascript para bajar el fichero a global (como attachment usando un custom http handler), pero me parecía algo chapucero, entonces me vino a la cabeza el Isolated Storage... ¡ tiene buena pinta !

Tan pronto como termine de codificar y probar el cambio lo subí al servidor de producción y vi como todo funcionaba estupendamente, los ficheros se guardaban en la máquina local sin problemas, hasta aquí muy bien, pero... unos días después había hecho unos cambio menores en la aplicacíon (cambiar el tamaño de algunos controles), subí la nueva version, y me encontré con que... TODOS LOS FICHEROS QUE HABIA GUARDADO EN EL ISOLATED STORAGE SE HABIAN PERDIDO !!! AAAAAHHH !!!

Post:

Desarrollando mi herramienta para editar diagramas de bases de datos (basada en Silverlight), me encontre con que necesitaba darle al usuario la opción de poder guardar diagramas en su maquina local (por ejemplo... el usuario pierde su conexión con internet y necesita guardar los cambios en algún sitio). Esto en un aplicacíon desktop no representa ningún problema pero con Silverlight nos encontramos que corre dentro de un sandbox, esto es... no puede acceder al sistema de ficheros de la maquina local (si no menuda podría liarse, ¿ os acordáis de los famosos ActiveX ? :-)). Una opción para solucionar esto es hacer un apaño mediante javascript para bajar el fichero a global (como attachment usando un custom http handler), pero me parecía algo chapucero, entonces me vino a la cabeza el Isolated Storage... ¡ tiene buena pinta !

Tan pronto como termine de codificar y probar el cambio lo subí al servidor de producción y vi como todo funcionaba estupendamente, los ficheros se guardaban en la máquina local sin problemas, hasta aquí muy bien, pero... unos días después había hecho unos cambio menores en la aplicacíon (cambiar el tamaño de algunos controles), subí la nueva version, y me encontré con que... TODOS LOS FICHEROS QUE HABIA GUARDADO EN EL ISOLATED STORAGE SE HABIAN PERDIDO !!! AAAAAHHH !!!

Hay alguna solución para esto? Afortunadamente la respuesta es SI, nos encontramos con que tenemos dos tipos de Isolated Storage:

  • Application Isolated Storage: Este es exclusivo para una aplicación SL que corre en eun sitio web dado... este es el malo de la pelicula, Silverlight the crea uno nuevo por cada deploy que haces de tu aplicación. Digamos que este solo debería de usarse para hacer operaciones de cache o almacenar contenido temporal.
  • Site Isolated Storage: Comparte el local storage a nivel de sitio web (si tienes varios XAP en tus sitios web, todos pueden acceder a este Storage), ...

    este es el bueno !

    he probado a subir nuevas version y los ficheros almacenados siguen estando accesibles, biien !!, este tiene sentido usarlo para permitir al usuario almacenar informacion en local.

Como creamos una instancia de un Site Iso Storage?

    
using System.IO.IsolatedStorage;

IsolatedStorageFile.GetUserStoreForSite()

Mas informacion sobre este tema en la siguiente entrada del foro Silverlight.net



Page (1) Of 1