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

StackOverflow https://stackoverflow.com/questions/144435

Pregunta

Estoy estudiando un mecanismo para que los datos de serialización se pasen a través de un socket o una memoria compartida en un mecanismo independiente del idioma. Me resisto a usar XML ya que estos datos serán muy estructurados, y la velocidad de codificación / decodificación es vital. Es importante tener una buena API de C que tenga licencia de forma gratuita, pero lo ideal es que haya soporte para muchos otros idiomas. He consultado buffers de protocolo de Google y ASN.1 . ¿Estoy en el camino correcto? ¿Hay algo mejor? ¿Debo implementar mi propia estructura empaquetada y no buscar algún estándar?

¿Fue útil?

Solución

Dados sus requisitos, me gustaría ir con Google Protocol Buffers. Parece que es ideal para tu aplicación.

Otros consejos

Podrías 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 herramienta llamada rpcgen. También es fácil crear un generador usted mismo cuando solo desea serializar los datos (que es lo que terminé haciendo por razones de portabilidad, me tomó medio día). Hay una implementación de código abierto en 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 sus necesidades reales podría ser más apropiado, ya que XDR tiene algunas limitaciones.

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

JSON es realmente mi favorito para este tipo de cosas. Aunque no tengo experiencia previa con cosas binarias en él. ¡Por favor, publique sus resultados si está planeando usar JSON!

Thrift es un formato binario creado por Facebook. Aquí hay una comparación con búferes de protocolo de Google.

Consulte Hessian

También hay XML binario pero parece que no estabilizado todavía. El artículo al que hago un enlace da un montón de enlaces que pueden ser de interés.

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

También puedes ver Muscle . Aunque lo hace bastante, se serializa a un formato binario.

Es necesario tener en cuenta pocas cosas

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top