Descubrí que algunas clases usan el [Serializable]
atributo.
- ¿Qué es?
- ¿Cuándo debería usarlo?
- ¿Qué tipo de beneficios obtendré?
c#
.net
serialization
Kevin
fuente
fuente
What is it?
stackoverflow.com/questions/3429921/what-does-serializable-meanRespuestas:
¿Qué es?
Cuando crea un objeto en una aplicación de marco .Net, no necesita pensar cómo se almacenan los datos en la memoria. Porque .Net Framework se encarga de eso por usted. Sin embargo, si desea almacenar el contenido de un objeto en un archivo, enviar un objeto a otro proceso o transmitirlo a través de la red, debe pensar cómo se representa el objeto porque necesitará convertirlo a un formato diferente . Esta conversión se llama SERIALIZACIÓN.
Usos para la serialización
La serialización permite al desarrollador guardar el estado de un objeto y recrearlo según sea necesario, proporcionando almacenamiento de objetos, así como intercambio de datos. A través de la serialización, un desarrollador puede realizar acciones como enviar el objeto a una aplicación remota a través 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 el usuario específico información en todas las aplicaciones.
Aplicar
SerializableAttribute
a un tipo para indicar que las instancias de este tipo se pueden serializar. ApliqueSerializableAttribute
incluso si la clase también implementa laISerializable
interfaz para controlar el proceso de serialización.Todos los campos públicos y privados en un tipo marcado por
SerializableAttribute
se serializan de manera predeterminada, a menos que el tipo implemente laISerializable
interfaz para anular el proceso de serialización. El proceso de serialización predeterminado excluye los campos marcados conNonSerializedAttribute
. Si un campo de tipo serializable contiene un puntero, un identificador o alguna otra estructura de datos que es específica de un entorno particular y no se puede reconstituir significativamente en un entorno diferente, entonces es posible que desee aplicarNonSerializedAttribute
a ese campo.Ver MSDN para más detalles.
Editar 1
Al transferir o guardar datos, debe enviar o guardar solo los datos requeridos. Por lo tanto, habrá menos retrasos en las transferencias y problemas de almacenamiento. Por lo tanto, puede optar por excluir una porción innecesaria de datos al serializar.
fuente
Algunos usos prácticos para el
[Serializable]
atributo:BinaryFormatter
clase en System.Runtime.Serialization.Formatters.BinaryClipboard.SetData()
: las clases no serializables no se pueden colocar en el portapapeles.MarshalByRefObject
) debe ser serializable.Estos son los casos de uso más comunes que he encontrado.
fuente
Dado que la pregunta original era sobre el SerializableAttribute, debe tenerse en cuenta que este atributo solo se aplica cuando se utiliza BinaryFormatter o SoapFormatter.
Es un poco confuso, a menos que realmente preste atención a los detalles, en cuanto a cuándo usarlo y cuál es su propósito real.
No tiene NADA que ver con la serialización XML o JSON.
Se utilizan con SerializableAttribute la interfaz ISerializable y la clase SerializationInfo. Estos también solo se usan con BinaryFormatter o SoapFormatter.
A menos que tenga la intención de serializar su clase usando Binary o Soap, no se moleste en marcar su clase como [Serializable]. Los serializadores XML y JSON ni siquiera son conscientes de su existencia.
fuente
Serializable
, y sin cuándo se eliminó el atributo. Entonces alguna interferencia es posible.Cómo funciona la serialización
Esta ilustración muestra el proceso general de serialización.
El objeto se serializa en una secuencia, que transporta no solo los datos, sino también información sobre el tipo de objeto, como su versión, cultura y nombre del ensamblado. Desde esa secuencia, se puede almacenar en una base de datos, un archivo o memoria.
Detalles en msdn.
fuente
Aquí hay un breve ejemplo de cómo funciona la serialización. También estaba aprendiendo sobre lo mismo y encontré dos enlaces útiles. Qué es la serialización y cómo se puede hacer en .NET .
Un programa de muestra que explica la serialización
Si usted no entiende el programa anterior se le da un programa sencillo tanto con la explicación aquí .
fuente
Publicación por entregas
La serialización es el proceso de convertir un objeto o un conjunto de gráficos de objetos en una secuencia, es una matriz de bytes en el caso de la serialización binaria
Usos de serialización
A continuación se muestran algunos atributos personalizados útiles que se utilizan durante la serialización de un objeto.
[Serializable] -> Se usa cuando marcamos el serializable de un objeto [No serializado ] -> Se usa cuando no queremos serializar el campo de un objeto. [OnSerializing] -> Se usa cuando queremos realizar alguna acción mientras se serializa un objeto [OnSerialized] -> Se usa cuando queremos realizar alguna acción después de serializar un objeto en la secuencia.
A continuación se muestra el ejemplo de serialización.
Aquí está el código de llamada
fuente