Hay varias razones por las que es posible que desee utilizar Thrift sobre algo como JSON / HTTP.
Mecanografía fuerte . JSON es excelente si está trabajando con lenguajes de script (Python, Ruby, PHP, JS, etc.). Sin embargo, si está creando porciones significativas de su aplicación en un lenguaje fuertemente tipado como C ++ o Java, JSON a menudo se convierte en un poco de dolor de cabeza para trabajar, ofuscando lo que está tratando de hacer en lugar de aclararlo. Thrift le permite trabajar de forma transparente con tipos nativos fuertes y también proporciona un mecanismo para lanzar excepciones a nivel de aplicación a través del cable.
Actuación. El rendimiento es una de las principales consideraciones de diseño de Thrift. JSON / HTTP están mucho más orientados a la legibilidad humana, lo que tiene el costo de hacerlos más intensivos en CPU para trabajar.
- ¿Cuáles son los mejores tutoriales de YouTube JavaScript desde principiante hasta nivel de dominio?
- ¿Puedo usar la misma palabra clave en mi sitio web para dos entidades separadas? Estoy escribiendo contenido para mi sitio web de madera, y quiero saber si puedo usar la palabra clave 'revestimiento de madera' para una de las páginas de categoría y una publicación de blog (el blog está en el mismo sitio).
- ¿Cuáles serían los mejores proyectos para bases de datos web?
- ¿Cuánto tengo que pagar por una empresa de desarrollo que me construirá un sitio web de 5 páginas (basado en WordPress) además de la reserva de dominios, el alojamiento, la marca y el diseño completo?
- ¿Cuáles son los mejores sitios web de cartera de programadores / desarrolladores web que existen? ¿Y qué es lo mejor para incluir / excluir de mi propio sitio web?
Eficiencia de serialización. Si está serializando grandes cantidades de datos, el protocolo binario de Thrift es más eficiente que JSON. (Notaré que definitivamente hay mecanismos más eficientes que Thrift, y también puede ahorrar espacio usando la compresión, por lo que se trata de encontrar una compensación que prefiera entre la facilidad de uso y la sobrecarga de CPU / espacio).
Soporte de versiones. Thrift tiene mecanismos incorporados para versionar datos. Esto puede ser muy útil en un entorno distribuido donde sus interfaces de servicio pueden cambiar, pero no puede actualizar atómicamente todo el código de su cliente y servidor.
Implementaciones de servidor. Thrift incluye implementaciones de servidor RPC para varios idiomas. Debido a que están optimizados para admitir solo solicitudes Thrift, son más livianos y de mayor rendimiento que las implementaciones típicas de servidores HTTP.
Dicho todo esto, creo que HTTP / JSON es una buena opción para muchos proyectos. Agregar una etapa de generación de código complica los procesos de compilación / implementación, y la mayoría de los beneficios clave de Thrift realmente no comienzan a funcionar hasta que está implementando software a una escala significativa y trabajando con al menos un lenguaje fuertemente tipado en su back-end.