por favor bórrame
He estado usando PB durante bastante tiempo, pero Thrift ha estado constantemente en el fondo de mi mente.
Las principales ventajas del ahorro, como yo lo veo, son:
- Colecciones nativas (es decir, vector, conjunto, etc.) frente a PB repetidos que brindan una funcionalidad similar, pero no del todo similar (sin iteradores a menos que profundice en RepeatedField, que la documentación establece que “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 soportados 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 encriptación/autenticación (por ejemplo) en la parte superior.
- El soporte de Windows no parece ser muy bueno.
- 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 cambiarme a Thrift, ¿alguien puede ofrecerme más pros/contras o razones para ir por un camino u otro?
¡Gracias!
Grzegorz Wierzowiecki
Como he dicho como “¿Mayores diferencias de Thrift vs Protocol Buffers?” tema :
Refiriéndose a Comparación entre Thrift, Protobuf y JSON :
- C++, Python, Java: soporte integrado en Protobuf y Thrift.
- La compatibilidad con Protobuf para otros idiomas (incluidos 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 una documentación mucho mejor y muchos ejemplos.
- Los objetos Protobuf son más pequeños.
- Protobuf es más rápido cuando se deshabilita “optimize_for = SPEED”
- Thrift ha integrado la implementación de RPC, mientras que para Las soluciones RPC de Protobuf están separadas, pero disponibles (me gusta Ceroc HIELO ).
- Protobuf se publica bajo licencia estilo BSD
- Thrift se publica bajo licencia Apache
Además, hay muchas herramientas adicionales interesantes disponibles para esas soluciones, que podrían decidir. Aquí hay ejemplos para Protobuf: Protobuf-wireshark , protobufetor.
-
Esta información está desactualizada. Aquí está la versión más reciente
– JensG
27 de enero de 2015 a las 9:21
Es posible que desee analizar su necesidad primero:
¿Necesita un formato independiente del protocolo? Por ejemplo, ¿quieres implementar un protocolo personalizado o necesitas una portabilidad del 100 %? En tal caso, utilice PB.
Si está de acuerdo con el protocolo predeterminado de Thrift y necesitar un protocolo para empezar, por todos los medios, ve con Thrift.
Espero que esto ayude.
La razón principal de nuestro proyecto para seguir con Thrift sobre los búferes de protocolo fue que los búferes de protocolo no generan automáticamente un servidor RPC completo, y las soluciones existentes para PB parecían ser bastante inestables. Solo mis $0.02.
Debe especificar su(s) caso(s) de uso en detalle. De lo contrario, esto es un “¿Qué es mejor, un automóvil o un camión?” pregunta.
Se considera un buen estilo colocar las actualizaciones en una sección separada en lugar de sobrescribir la pregunta original. 🙂
– awdz9nld
7 de noviembre de 2012 a las 14:18
De hecho, puede agregar su propia capa de encriptación/autenticación. Solo necesita escribir una clase TTransport alternativa. O algo así… hay una clase TSLSocket en alguna parte.
– Timmmmm
8 de enero de 2013 a las 11:57
Vieja pregunta, lo sé. Solo quiero mencionar que la compatibilidad con Windows de Thrift se ha mejorado mucho desde 2010.
– JensG
18 de enero de 2014 a las 12:09