serializar serializacion objeto deserializar deserializacion c language-agnostic serialization asn.1

serializacion - ¿Cuál es la mejor manera de serializar datos en un formato binario independiente del idioma?



serializar objeto c# xml (10)

Estoy investigando un mecanismo para serializar datos que se pasarán a través de un socket o memoria compartida en un mecanismo independiente del lenguaje. Soy reacio a usar XML ya que estos datos van a estar muy estructurados, y la velocidad de codificación / descodificación es vital. Tener una buena API C que tenga una licencia generosa es importante, pero idealmente debería haber soporte para una tonelada de otros idiomas. Miré los búferes de protocolo de Google y ASN.1 . ¿Estoy en el camino correcto? ¿Hay algo mejor? ¿Debería implementar mi propia estructura empaquetada y no buscar algún estándar?



JSON es realmente mi favorito para este tipo de cosas. Sin embargo, no tengo experiencia previa con material binario. ¡Publique sus resultados si planea usar JSON!


Otra opción es SNAC / TLV que usa AOL en su protocolo Oscar / AIM.


Podría considerar XDR. Tiene un RFC . Lo he usado y nunca he tenido ningún problema de rendimiento con él. Se usó en ONC RPC y tiene una y viene con una herramienta llamada rpcgen. También es fácil crear un generador usted mismo cuando solo quiere serializar los datos (que es lo que terminé haciendo por razones de portabilidad, me tomó medio día). Existe una implementación de código abierto C, pero ya puede estar en una biblioteca del sistema, por lo que no necesitaría las fuentes.

ASN.1 siempre me pareció un poco barroco, pero dependiendo de tus necesidades reales podría ser más apropiado, ya que hay algunas limitaciones para XDR.


También hay XML binario, pero parece no estar estabilizado todavía. El artículo al que me enlace ofrece un grupo de enlaces que pueden ser de interés.


Teniendo en cuenta sus requisitos, me gustaría ir con Buffers de Protocolo de Google. Parece que es ideal para su aplicación.



También echa un vistazo a Muscle . Mientras hace bastante, serializa a un formato binario.


Solo quería incluir ASN.1 en esta mezcla. ASN.1 es un estándar de formato, pero hay bibliotecas para la mayoría de los lenguajes, y la interfaz C a través de asn1c es mucho más limpia que la interfaz C para los buffers de protocolo .


Pocas cosas que debes considerar

1. Storage 2. Encoding Style (1 byte 2 byte) 3. TLV standards

El analizador ASN.1 es bueno para las representaciones binarias. La mejor parte es que ASN.1 es una tecnología bien establecida que se usa ampliamente tanto dentro del UIT-T como fuera de él. La notación es compatible con varios proveedores de software.