Publicación por entregas

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 30 de enero de 2021; las comprobaciones requieren 6 ediciones .

La serialización (en programación) es el proceso de traducir una estructura de datos en una secuencia de bits. Lo contrario de la operación de serialización es la operación de deserialización (estructuración), la creación de una estructura de datos a partir de una secuencia de bits.

La serialización se utiliza para transferir objetos a través de la red y guardarlos en archivos . Por ejemplo, necesita crear una aplicación distribuida , diferentes partes de las cuales deben intercambiar datos con una estructura compleja. En este caso, para los tipos de datos que se supone que deben transferirse, se escribe un código que realiza la serialización y la deserialización. El objeto se llena con los datos necesarios , luego se llama al código de serialización, el resultado es, por ejemplo, un documento XML . El resultado de la serialización se transmite a la parte receptora a través de, por ejemplo, correo electrónico o HTTP .. La aplicación receptora crea un objeto del mismo tipo y llama al código de deserialización, lo que da como resultado un objeto con los mismos datos que había en el objeto de la aplicación emisora. Por ejemplo, la serialización de objetos vía SOAP en Microsoft .NET funciona según este esquema .

Aplicación

Inherente a cualquiera de los esquemas de serialización es que la codificación de datos es secuencial por definición, y recuperar cualquier parte de una estructura de datos serializados requiere que todo el objeto se lea de principio a fin y se vuelva a crear. En muchas aplicaciones, esta linealidad es útil porque permite utilizar interfaces de E/S simples y de propósito general para almacenar y transferir el estado de un objeto. En aplicaciones donde el alto rendimiento es importante, puede tener sentido utilizar una organización de almacenamiento no lineal más compleja.

La serialización proporciona varias características útiles:

Para hacer el mejor uso de estas funciones, se debe mantener la independencia de la arquitectura. Por ejemplo, es necesario poder recrear de forma fiable un flujo de datos serializados independientemente del tipo de endian utilizado en una arquitectura determinada. Esto significa que el procedimiento más simple y rápido para copiar directamente la ubicación de la memoria donde se encuentra la estructura de datos no puede funcionar de manera confiable para todas las arquitecturas. La serialización de estructuras de datos en un formato independiente de la arquitectura significa que no deberían surgir problemas debido a diferentes ordenaciones de bytes, mecanismos de asignación de memoria o diferencias en cómo se representan las estructuras de datos en los lenguajes de programación.

Desventajas

La serialización rompe la opacidad de un tipo de datos abstracto, lo que potencialmente expone detalles de implementación privados. Las implementaciones triviales que serializan todos los miembros de datos pueden romper la encapsulación.

Para confundir a los competidores en términos de crear productos similares, los desarrolladores de software propietario a menudo mantienen en secreto los detalles de los formatos de serialización de sus programas. Algunos ofuscan deliberadamente o incluso cifran los datos serializados. Sin embargo, la interoperabilidad requiere que las aplicaciones puedan comprender los formatos de serialización de las demás. Por lo tanto, las arquitecturas de invocación de métodos remotos como CORBA especifican sus formatos de serialización en detalle.

Serialización de datos científicos

Para grandes conjuntos de datos científicos, como datos satelitales o modelos numéricos de clima, tiempo y océanos, se han desarrollado estándares de serialización binarios especiales, como HDF , netCDF y el antiguo GRIB .

Véase también

Enlaces