viernes, 7 de octubre de 2011

Serialización

La serialización consiste en codificar un objeto como una secuencia de bytes para almacenarlos en memoria o en un archivo para poder guardar el estado de los objetos aunque se cierre el programa. Es utilizada para conseguir persistencia entre diferentes sesiones y para poder transmitir objetos remotamente a través diferentes máquinas de una red, proceso conocido como invocación remota de objetos (RMI). La serialización es un mecanismo ampliamente usado para transportar objetos a través de una red, para hacer persistente un objeto en un archivo o base de dato, o para distribuir objetos idénticos a varias aplicaciones o localizaciones. Al serializar un objeto, todos sus miembros son serializados aunque sean private. Para evitarlo debemos utilizar el modificador transient que ocultará estos miembros. Para serializar un objeto, es necesario que el objeto mismo implemente el interfaz ‘Serializable’. Usos Serialización tiene una serie de ventajas: Un método de persistencia de objetos que es más conveniente que escribir sus propiedades a un archivo de texto en disco. Un método de emisión de llamadas a procedimiento remoto, por ejemplo, como en SOAP. Un método para la distribución de objetos, especialmente en los componentes software, tales como COM, CORBA, etc. Un método para detectar cambios en variables en el tiempo.


Cómo funciona la serialización
Este ejemplo muestra el proceso total de serialización.


El objeto se serializa en una secuencia que, además de los datos, contiene información sobre el tipo de objeto, como la versión, referencia cultural y nombre de ensamblado. Esa secuencia se puede almacenar en una base de datos, un archivo o en memoria.


Usos de la serialización
La serialización permite al desarrollador guardar el estado de un objeto y volver a crearlo cuando es necesario, y proporcionar almacenamiento de objetos e intercambio de datos. A través de la serialización, un desarrollador puede realizar acciones como enviar un objeto a una aplicación remota por medio de un servicio Web, pasar un objeto de un dominio a otro, pasar un objeto a través de un firewall como una cadena XML o mantener la seguridad o información específica del usuario entre aplicaciones.


Crear un objeto serializable
Para serializar un objeto, se necesita que el objeto esté serializado, una secuencia que contenga el objeto serializado y un objeto Formatter. La enumeración System.Runtime.Serialization contiene las clases necesarias para serializar y deserializar objetos.


Aplique el atributo SerializableAttribute a un tipo para indicar que se pueden serializar las instancias de ese tipo. Se produce una excepción SerializationException si se intenta serializar pero el tipo no tiene el atributo SerializableAttribute.


Si no desea que un campo de su clase se pueda serializar, aplique el atributo NonSerializedAttribute. Si un campo de un tipo serializable contiene un puntero, controlador u otra estructura de datos específica de un entorno determinado, y el significado del campo no se puede reconstruir en un entorno diferente, es conveniente que no sea serializable.


Si una clase serializada contiene referencias a objetos de otras clases marcadas con el atributo SerializableAttribute, esos objetos también se serializarán.

No hay comentarios:

Publicar un comentario