Buscar este blog

jueves, 20 de mayo de 2010

Compartiendo información entre Aplicaciones Silverlight

Dentro de una solución dentro de cuya arquitectura se utilicen aplicaciones Silverlight, puede ser bastante útil el pasar información de un .XAP a otro a manera de estado, o como parámetros o banderas para ejecutar tal o cual acción. Esta funcionalidad se logra con Isolated Storage.

Isolated Storage funciona de manera similar a las cookies dentro de un cliente que explora una página web, es decir, crea archivos dentro de la máquina cliente que accede a la aplicación, y puede utilizarse para guardar el estado de una aplicación o bien, para pasar grandes cantidades de información, siempre y cuando el cliente permita crear archivos de gran dimensión. Estos son los principales puntos sobre el manejo de Isolated storage:

• La forma en que Silverlight 2 maneja Isolated Storage es a través de archivos que se guardan en la máquina del cliente de acuerdo a su sistema operativo.
Las ubicaciones son las siguientes:



Sistema Operativo


Ubicación Física


Windows Vista


<SYSTEMDRIVE>\Users\<user>\AppData\LocalLow\Microsoft\Silverlight\is


Windows XP


<SYSTEMDRIVE>\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Silverlight\is


MAC OS


/Users/<user>/Library/Application Support/Microsoft/Silverlight/is




• El Isolated Storage se basa en la identidad del usuario y de la aplicación, o bien de la identidad del usuario y la identidad de la aplicación.

• Cada aplicación puede guardar su propio Isolated Storage, el cual es visible solo para esa aplicación mientras se esté ejecutando (o mientras no lo eliminen de la ruta física).

• Todas las aplicaciones de un mismo sitio tienen un Isolated Storage común, el cual es visible para todas las aplicaciones del mismo sitio. La forma de grabar a este Storage es mediante el siguiente código:



using (var store = IsolatedStorageFile.GetUserStoreForSite())

using (var stream = store.CreateFile("sharedhello.txt"))

using (var writer = new StreamWriter(stream)) {

writer.Write ("Hello Shared World");

}

• La forma de leer de este Storage desde otra
aplicación es la siguiente:



using (var store = IsolatedStorageFile.GetUserStoreForSite())
{

if (store.FileExists("sharedhello.txt"))
{

using (var stream = store.OpenFile("sharedhello.txt",
FileMode.Open))

using (var reader = new StreamReader(stream)) {

string contents = reader.ReadToEnd(); // "Hello


Shared World"

}

}

}

• El Isolated Storage es
medido en Quotas, que para silverlight representa la cantidad de espacio físico disponible para este almacenaje. Por default el espacio del Quota es de 1MB.

• Es posible solicitar más espacio físico al usuario si así se requiere, pero el código debe dispararse desde un evento disparado por el usuario (un click de botón) y debe esperar la autorización del usuario.
Esto es que una vez que se ejecuta el código, la aplicación pide permiso al
usuario para incrementar su espacio disponible de almacenaje.
Esto se hacemediante las siguientes instrucciones:



using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{

// 5 MB of isolated storage space is needed

int spaceNeeded = 1024 *
1024 * 5;



if (store.AvailableFreeSpace < spaceNeeded)
{

if (store.IncreaseQuotaTo(store.Quota
+ spaceNeeded))

{

// The user accepted the request

}

}

}

No hay comentarios:

Publicar un comentario