2010-06-03 13 views
5

¿Cuántos proyectos de software ha trabajado en la serialización de objetos usados? Personalmente, nunca me encontré con un escenario donde se utilizó la serialización de objetos. Un caso de uso en el que puedo pensar es un software de servidor que almacena objetos en el disco para ahorrar memoria. ¿Hay otros tipos de software donde la serialización de objetos es esencial o preferida sobre una base de datos?¿Usos prácticos de serialización de objetos?

Respuesta

4

He utilizado la serialización de objetos en muchos de mis proyectos. Algunas veces lo usamos para almacenar localmente configuraciones específicas de la computadora. También utilicé la serialización XML para simplificar la interacción y la generación de documentos XML. También es muy beneficioso en los protocolos de comunicación. Serializar en un extremo y volver a inflar en el otro extremo.

+0

Sí - ajustes de configuración de usuario en las cookies, por ejemplo. Una gran cantidad de datos de cookies es la serialización. JSON es otro protocolo de serialización. – dkretz

1

puede combinar la serialización de db &. f.ex. cuando tiene que almacenar un objeto con muchos atributos (a menudo dinámicos, es decir, un conjunto de atributos de objetos será diferente de otro) con la base de datos relacional, y no desea crear una nueva columna por cada atributo

2

Estoy usando la serialización para pasar objetos a través de un socket TCP. Pones XmlSerializers en cualquier lado y analiza tus datos en objetos fácilmente disponibles. Si haces un poco de trabajo de campo, puedes obtenerlo de modo que básicamente estés pasando objetos de un lado a otro, y hace que la comunicación de socket sea extremadamente fácil, reduciéndola a nada más que socket.Send(myObject);.

+0

Sí, parece un escenario donde la serialización de objetos es esencial. De forma similar, cuando un contenedor EJB sirve objetos a un cliente remoto, tiene lugar la serialización. – nash

0

Comenzamos con un sistema que serializaba todos los miles de objetos en memoria en el disco cada 15 minutos más o menos. Cuando eso comenzó a tomar demasiado tiempo, pasamos a un modo mixto de guardar los objetos en un archivo de base de datos relacional y encurtido (este era un sistema de python por cierto). Finalmente, la mayoría de los datos se almacenaron en una base de datos relacional. Curiosamente, el sistema fue escrito de tal manera que a todo el código de la aplicación no le importaba lo que sucedía allí abajo. Todo se hizo usando XP y miles de pruebas automatizadas.

4

Bueno, la conversión de objetos a XML o JSON es una forma de serialización que es bastante común en la web. También trabajé en un proyecto donde los objetos se crearon y serializaron en un archivo binario en una aplicación y luego se importaron a otra aplicación personalizada (aunque eso es frágil ya que usa C# y la serialización se rompió en el pasado entre versiones de .NET framework) Además, la configuración de la aplicación que tiene una estructura compleja puede ser útil para serializar. También creo que las API remotas usan la serialización para comunicarse. Básicamente, la serialización en general es simplemente una manera de almacenar los estados de sus objetos, y esto tiene muchos usos diferentes.

2

Aquí están algunos usos que se me ocurren:

  1. Enviar un objeto a través de la red, el ejemplo más común es seria objetos través de un cluster
  2. objeto Serialize para almacenar en caché (más o menos), es decir, guardar el estado en un archivo y vuelva a leerlo
  3. Serializar datos pasivos/grandes en un archivo para minimizar el consumo de memoria y volver a leerlos cuando sea necesario.
0

Las aplicaciones basadas en documentos, como los procesadores de texto y los editores de gráficos vectoriales a menudo serializarán el modelo de documento en el disco cuando el usuario invoca el comando Guardar. La serialización suele preferirse a las bases de datos complejas en estas aplicaciones.

0

El uso de la serialización le ahorra tiempo cada vez que desea implementar una funcionalidad de importación/exportación.

Cada vez que necesita exportar los datos de su sistema, crear copias de seguridad o almacenar algún tipo de configuración, puede usar la serialización y simplemente guardar el estado de los objetos que representan la configuración actual, datos o lo que sea.

Solo cuando necesita un formato específico de los datos exportados/importados, tiene sentido crear un analizador y exportador/importador personalizado.

La serialización también es a prueba de cambios. Cada vez que cambie el formato del objeto que está involucrado en la funcionalidad de intercambio, se puede exportar automáticamente y no tiene que cambiar la lógica detrás de sus partes de exportación/importación.

+1

La serialización solo es a prueba de cambios dentro del código. Cabe señalar que los datos resultantes son muy frágiles. – cobbal

2

La comunicación entre procesos es un problema.

0

Lo usamos para una copia de seguridad & funcionalidad de actualización. Básicamente, se hizo una copia de seguridad de los objetos de hibernación en serie, luego se alteró el esquema de DB a través de la actualización y se entregó una clase de ayuda que "convirtió" los objetos viejos en el nuevo esquema de base de datos. De esta forma, teníamos un mecanismo de actualización bastante sólido que no se rompería fácilmente y realiza una copia de seguridad automática al mismo tiempo.

0

He utilizado la serialización XML en gran medida en un proyecto. La técnica se utilizó para persistir en las estructuras de datos de la base de datos que no tenían una estructura común, por lo que los datos no se podían almacenar directamente. También utilicé la serialización para separar las configuraciones de la aplicación que podrían cambiarse en tiempo de ejecución.

Cuestiones relacionadas