Capitulo 2 – Input/output (I/O) - Parte 2

Lección 3 - Streams de compresión.
 
.Net dispone de dos algoritmos de compresión, Gzip y Deflate, ambos libres de patentes y estándares de la industria. Ambos están limitados a un máximo de 4GB de datos sin compresión.
La clase GzipStream permite comprimir datos a través de otro Stream usando el método de compresión GZIP.
La clase DeflateStream permite comprimir datos a través de otro Stream usando el método de compresión DEFLATE.
La diferencia entre estos dos es que Gzip almacena más información de los datos comprimidos para poder usarse con herramientas como gzip. Deflate tiene menos información y por ello es más efectivo.
 
Como comprimir datos con un compresión stream?

Se debe abrir el archivo que se va a comprimir y crear un archivo nuevo en el que se va a escribir.
Crear un GZipStream donde le paso el stream de destino, y el modo de compresión (en este caso Compress)
clip_image002
Para comprimir los datos con un DeflateStream solo se debe cambiar la parte donde se crea el GZipSteam por DeflateStream
clip_image004
 
Como descomprimir datos con un compresión stream?
clip_image006
Para descomprimir los datos con un DeflateStream solo se debe cambiar la parte donde se crea el GZipSteam por DeflateStream
clip_image008

 
Lección 4 -Trabajando con almacenamiento aislado (Isolated storage)
En la actualidad hay una gran cantidad de malware (virus, spyware, adware, gusanos, troyanos, etc.).
La utilización de un almacenamiento aislado permite que las aplicaciones que no son de plena confianza almacenen datos de una forma controlada por la directiva de seguridad del equipo. Crea un área exclusiva de almacenamiento para una aplicación o un componente, al que sólo esta puede obtener acceso. Por lo tanto, cada aplicación tiene su propia área de archivos asignada automáticamente , completamente aislada de otras aplicaciones.
La clase IsaolatedStorageFile: permite crear archivos y directorios en el isolated storage. Se encuentra en el NameSpace System.IO.IsolatedStorage.
IsolatedStorageScope es un enumerador que describe el scope (ambito) del almacenamiento aislado.
IsolatedStorageFileStream: es un stream utilizado para crear archivos en el isolated storage. Deriva de la clase filestream, por lo tanto tiene casi las mismas propiedades y manejos.
 
Como crear un almacenamiento?
Antes de grabar información en tu Isolated storage, se debe de determinar el ámbito donde se quiere guardar la información. Se puede elegir entre 2 métodos:
- Assembly/Machine.- Crea un almacenamiento para mantener la informacion que es específica para la llamada del assembly y de la máquina local. Ideal para crear datos a nivel de aplicación:
clip_image009
- Assembly/User.- Este método crea un almacenamiento que guarda información que es específica para la llamada del assembly y el usuario actual. Es útil para crear datos a nivel de usuario:
clip_image010
 
Leyendo y escribiendo información en un almacenamiento aislado
Se crea un objeto IsolatedStorageFileStream creando una instancia de la clase, especificando cual el nombre del archivo IsolatedStorageFile que se va a incluir dentro.
clip_image011
Después de crear el almacenamiento se puede manejar de la misma manera que un fileStream. Por ejemplo para escribirlo:
clip_image012
Cuando usamos IsolatedStorage no se puede verificar si un archivo existe ahí, esto se debe realizar, por ejemplo preguntando si un arreglo que contiene los nombres de los archivos del IsolatedStorage es mayor a 0:
clip_image013
 

Como usar directorios en un almacenamiento aislado?
En un isolated storage también tenemos permitido crear directorios, esto es mediante CreateDirectory y después de crear el directorio se pueden crear archivos, especificando el nombre, el FileMode a usar y el objeto de almacenamiento creado:
clip_image014
Para obtener los archivos que tiene ese directorio se realiza de la siguiente forma:
clip_image015
 
IsolatedStrorageFilePermission es una clase que encapsula los permisos que especifican el acceso al isolated storage.
Propiedades:
UsageAllowed Obtiene o establece los tipos de permisos a los usuarios.
UserQuota Obtiene o establece el tamaño de almacenamiento máximo por usuario.
 
Permitiendo el almacenamiento aislado
Para otorgar suficientes permisos, uno necesita demandar o pedir permisos. Para hacer que el framework se encargue de esto, se hace lo siguiente:
Se usa System.Security.Permissions.

Antes de la clase a la que se desea otorgar permisos, se debe colocar el atributo

clip_image016

Esto permite seleccionar qué assemblies requieren permisos, y si no los tiene, con este atributo, se hace el pedido.




....................................................................................................................................................
Bajar este capítulo en formato PDF                                                               Codigo Ejemplo
....................................................................................................................................................

2 comentarios:

  1. Hola como estas, me gustaría saber si podrías arreglar el link para descargar el PDF ya que no funciona, muchas gracias y felicitaciones, esta excelente todo.

    ResponderEliminar