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:
| Necesidad | Mecanismo |
|---|---|
| Datos jerárquicos y configurables | Nodo |
| Mensajes compactos de red | Serialización binaria |
| Formato personalizado de una clase | IBinarySerializable |
| Persistencia estructurada | Nodo + serialización |
Relación con Buffer
El resultado de una serialización binaria termina normalmente en un Buffer:
Objeto / dato
↓
Serializacion
↓
BinaryWriter
↓
Buffer
↓
PaqueteEl 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.
