jueves, 4 de octubre de 2007

Almacenamiento Aislado en .NET

Esta clase permite definir la creación y utilización de archivos y directorios en entornos aislados.
Los entornos aislados son útiles cuando se necesita acceder a datos contenidos en archivos (por ejemplo configuraciones) y se quiere evitar que el assembly pueda ser explotado con fines maleficos (por ejemplo, acceder a otros recursos dentro del sistema de archivos).

Antes de utilizar almacenamiento aislado es necesario definir el alcance de dicho almacenamiento, es decir, quien y desde donde podrá acceder a los datos ahí almacenados. Los métodos de almacenamiento son:

Assembly/Machine: Corresponde a información del Assembly a nivel de máquina, por ejemplo, archivos de configuración que tendrá una aplicación comúnes para todos los usuarios de una máquina.
Asssembly/User: Datos del assembly a nivel de usuario, sólo cuando el usuario en cuestión ejecute el assembly dado se podrá acceder a los datos almacenados.
Domain/Machine: Similar a Assembly/Machine, pero a nivel de dominio de apicación (AppDomain).
Domain/User: Similar a Assembly/User, pero a nivel de dominio de apicación (AppDomain).

A continuación ejemplos de como crear almacenamientos aislados.

// nivel Assembly/Machine
IsolatedStorageFile machineStorage = IsolatedStorageFile.GetMachineStoreForAssembly();

// nivel Assembly/User
IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly();

// nivel Domain/Machine
IsolatedStorageFile machineDomainStorage = IsolatedStorageFile.GetMachineStoreForDomain();

// nivel Domain/User
IsolatedStorageFile userDomainStorage = IsolatedStorageFile.GetUserStoreForDomain();

Con la clase IsolatedStorageFileStream es posible crear archivos en un almacenamiento aislado. IsolatedStorageFileStream deriva de la clase FileStream, por lo que su comportamiento es muy similar a cualquier Stream de datos.

A continuación, un ejemplo del uso de IsolatedStorageFileStream:

IsolatedStorageFile almacen = IsolatedStorageFile.GetUserStoreForAssembly();

IsolatedStorageFileStream configuracion = new IsolatedStorageFileStream("Configuracion.dat", FileMode.Create, almacen);

StreamWriter sw = new StreamWriter(configuracion)
sw.WriteLine("Nombre = francisco");
sw.Close();
configuracion.Close();

No hay comentarios: