c++ - what - Buffer de ahorro frente a protocolo
what is protocol buffers (4)
Como he dicho como "¿Las diferencias más grandes de Thrift versus Protocol Buffers?" tema:
En referencia a la comparación Thrift vs Protobuf vs JSON :
- C ++, Python, Java: soporte integrado en Protobuf y Thrift.
- El soporte de Protobuf para otros lenguajes (incluyendo Lua, Matlab, Ruby, Perl, R, Php, OCaml, Mercury, Erlang, Go, D, Lisp) está disponible como Complementos de terceros (por cierto, aquí está el soporte de SWI-Prolog ).
- Protobuf tiene mucha mejor documentación y muchos ejemplos.
- Los objetos Protobuf son más pequeños
- Protobuf es más rápido al unir "optimize_for = SPEED"
- Thrift ha integrado la implementación RPC, mientras que las soluciones Protobuf RPC están separadas, pero disponibles (como Zeroc ICE ).
- Protobuf se lanza bajo licencia de estilo BSD
- Thrift se libera bajo licencia Apache
Además, hay muchas herramientas adicionales interesantes disponibles para esas soluciones, que podrían decidir. Aquí hay ejemplos de Protobuf: Protobuf-wireshark , protobufeditor .
Esta pregunta ya tiene una respuesta aquí:
- Las mayores diferencias de Thrift vs Protocol Buffers? 12 respuestas
He usado PB durante bastante tiempo, pero Thrift siempre ha estado en mi mente.
Las ventajas principales del ahorro, como lo veo, son:
- Las colecciones nativas (es decir, vector, etc.) frente a PB repetidas proporcionan una funcionalidad similar, pero no del todo similar (sin iteradores a menos que excaves en RepeatedField que la documentación dice "no debería ser necesario en la mayoría de los casos").
- Se proporciona una implementación RPC decente, en lugar de solo ganchos para conectar el suyo.
- Más idiomas admitidos oficialmente (PB ofrece soporte "oficial" para Java, C ++, Python)
Los contras de Thrift:
- La implementación de RPC significa que no puedo conectar mi propia capa de cifrado / autenticación (por ejemplo) en la parte superior.
- El soporte de Windows no parece ser excelente.
- PB definitivamente parece tener, si no mejor, documentación más accesible.
Neutral:
- Tamaño desconocido de .lib / .dll en Windows (Thrift).
- Tamaño grande de .lib en Windows (PB, pero ofrece un -lite que es significativamente más pequeño).
- En cuanto a la velocidad, ambos parecen ser similares.
Todavía no estoy listo para dar el paso y cambiar a Ahorro, ¿alguien puede ofrecerme más ventajas / desventajas o razones para ir de una manera u otra?
¡Gracias!
Debe especificar su caso (s) de uso en detalle. De lo contrario, este es un "¿Qué es mejor, un automóvil o un camión?" pregunta.
El principal motivo de nuestro proyecto para seguir con Thrift sobre los buffers de protocolo fue que los buffers de protocolo no generan automáticamente un servidor RPC completo, y las soluciones existentes para PB parecían ser bastante inestables. Solo mi $ 0.02.
Es posible que desee analizar su necesidad primero:
¿Necesitas un formato de protocolo agnóstico? Por ejemplo, ¿desea implementar un protocolo personalizado o necesita 100% de portabilidad? En tal caso, use PB.
Si está de acuerdo con el protocolo predeterminado de Thrift, y necesita un protocolo para empezar, por supuesto, vaya con Thrift.
Espero que esto ayude.