312 votes

Les plus grandes différences entre Thrift et Protocol Buffers ?

Quels sont les principaux avantages et inconvénients de Apache Thrift vs Les tampons de protocole de Google ?

4 votes

À titre d'information, Marc Gravell maintient une bibliothèque pour travailler avec le protobuf de Google, appelée protobuf.net, à l'adresse suivante code.google.com/p/protobuf-net

6 votes

Cette question et certaines des réponses suivantes datent d'environ 6 ans. Beaucoup de choses ont sans doute changé depuis.

175voto

hazzen Points 7315

Ils offrent tous deux les mêmes caractéristiques, mais il existe quelques différences :

  • Le Thrift soutient les "exceptions".
  • Les tampons de protocole disposent d'une bien meilleure documentation/exemples.
  • Thrift possède une fonction intégrée Set type
  • Les tampons de protocole permettent des "extensions" - vous pouvez étendre un proto externe pour ajouter des champs supplémentaires, tout en permettant au code externe d'opérer sur les valeurs. Il n'y a aucun moyen de faire cela dans Thrift.
  • Je trouve les tampons de protocole beaucoup plus faciles à lire

Fondamentalement, ils sont assez équivalents (avec des tampons de protocole légèrement plus efficaces d'après ce que j'ai lu).

88voto

Mike Gray Points 661

Une autre différence importante concerne les langues prises en charge par défaut.

  • Tampons de protocole : Java, Android Java, C++, Python, Ruby, C#, Go, Objective-C, Node.js
  • La friperie : Java, C++, Python, Ruby, C#, Go, Objective-C, JavaScript, Node.js, Erlang, PHP, Perl, Haskell, Smalltalk, OCaml, Delphi, D, Haxe

Les deux pourraient être étendus à d'autres plates-formes, mais il s'agit là des liaisons de langues disponibles immédiatement.

79voto

saidimu Points 445

RPC est une autre différence essentielle. Thrift génère du code pour implémenter des clients et des serveurs RPC alors que Protocol Buffers semble avoir été conçu uniquement comme un format d'échange de données.

63voto

eishay Points 678
  • Les objets sérialisés Protobuf sont environ 30% plus petits que Thrift.
  • La plupart des actions que vous pouvez vouloir effectuer avec des objets protobuf (créer, sérialiser, désérialiser) sont les suivantes beaucoup plus lent que l'économie à moins que vous n'activiez option optimize_for = SPEED .
  • Thrift dispose de structures de données plus riches (Map, Set)
  • L'API de Protobuf semble plus propre, bien que les classes générées soient toutes emballées comme des classes internes, ce qui n'est pas si agréable.
  • Les enums Thrift ne sont pas de vrais enums Java, c'est-à-dire qu'ils sont juste des ints. Protobuf a de vrais enums Java.

Pour un examen plus approfondi des différences, consultez les différences de code source à l'adresse suivante ce projet open source .

59voto

Comme je l'ai dit "Buffers Thrift vs Protocol" sujet :

Se référant à Comparaison entre Thrift, Protobuf et JSON :

En outre, il existe de nombreux outils supplémentaires intéressants pour ces solutions, qui pourraient être déterminants. Voici des exemples pour Protobuf : Protobuf-wireshark , moniteur de protobufe .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X