logo
Transporte

Serialización

Cómo Eco convierte datos entre representaciones estructuradas y binarias.

Serialización

La serialización es la capa que transforma los datos que utiliza Eco en una representación que puede escribirse en un Buffer, almacenarse o enviarse por la red.

Eco distingue principalmente entre datos estructurados mediante Nodo y serialización binaria mediante IBinarySerializable y Serializacion.

Separar las capas

Nodo describe datos. Buffer contiene bytes. Paquete describe un mensaje del protocolo. No son tres nombres para la misma cosa.

Nodo

Nodo es una estructura jerárquica formada por nombre, valor y nodos hijos. Permite representar datos con rutas y convertir valores entre tipos compatibles.

Nodo
├── name
├── value
└── children
    ├── ...
    └── ...

Entre sus operaciones están AddChild, GetChild, SetChild, GetHierarchy y SetHierarchy.

Serialización binaria

Las clases que necesitan controlar cómo se representan sus datos pueden implementar IBinarySerializable:

public interface IBinarySerializable
{
    void Serialize(BinaryWriter writer);
    void Deserialize(BinaryReader reader);
}

Esto permite definir una representación específica cuando la serialización automática no sea suficiente o cuando sea importante reducir el tamaño de los datos.

Serialización de tipos

Serializacion proporciona extensiones para escribir y leer tipos básicos, estructuras de Unity, arrays, listas y objetos compatibles con el sistema de Eco.

La resolución de tipos puede utilizar nombres serializados y cachés de tipo para evitar repetir el trabajo de reflexión.

Nodo frente a binario

Los dos mecanismos responden a necesidades distintas:

NecesidadMecanismo
Datos jerárquicos y configurablesNodo
Mensajes compactos de redSerialización binaria
Formato personalizado de una claseIBinarySerializable
Persistencia estructuradaNodo + serialización

Relación con Buffer

El resultado de una serialización binaria termina normalmente en un Buffer:

Objeto / dato

Serializacion

BinaryWriter

Buffer

Paquete

El Buffer no decide qué significa el dato. Sólo proporciona el soporte de lectura y escritura binaria.

Relación con Paquete

Un Paquete añade significado de protocolo al flujo binario. Por ejemplo, dos mensajes pueden transportar datos con la misma representación binaria pero utilizar diferentes tipos de paquete y, por tanto, tener comportamientos distintos.

Relación con TNet

Eco conserva el modelo de serialización heredado de TNet, incluyendo DataNode, IBinarySerializable y la infraestructura de escritura y lectura binaria. La nomenclatura de Eco utiliza Nodo y Serializacion.

Referencias

Eco

Código de Nodo, Buffer y serialización.

TNet

Repositorio upstream de la implementación heredada.

DeepWiki · TNet

Referencia externa para contrastar el sistema de serialización de TNet.

On this page