Protocol Buffers, aussi connu sous le nom de Protobuf, est un format de sérialisation avec un langage de description d'interface développé par Google. L'implémentation d'origine publiée par Google pour C++, Java et Python est disponible sous une licence libre. Des implémentations pour d'autres langages sont disponibles ou en cours de développement. Son intérêt concerne le développement de programmes ayant à communiquer les uns avec les autres sur un réseau ou pour simplement stocker des données. La méthode est basée sur un langage de description d’interface décrivant une structure des données. Un programme pourra alors générer ou analyser les messages en fonction de cette description. Google a développé le Protocol Buffers pour un usage interne. Il a réalisé un générateur de code pour différents langages sous licence open source. La conception du Protocol Buffers avait pour objectif la simplicité et la performance avec pour objectif d’être plus léger et plus rapide que le XML. Le Protocol Buffers est largement utilisé chez Google pour le stockage et l’échange de toutes sortes de structures d’informations. Cette méthode sert de système RPC (remote procedure call) personnalisé utilisé pour quasiment l’ensemble des communications inter-machines de la compagnie. Les Protocol Buffers sont très similaires au protocole Apache Thrift (utilisé par Facebook par exemple), sauf que l’implémentation publique du Protocole Buffers ne comprend pas de véritable ensemble de protocoles RPC voué à des services spécifiques. Un développeur logiciel définira les structures de données (messages) et services au sein d’un fichier .proto et le transpilera via protoc. Cette compilation génèrera le code qui pourra être invoqué par un expéditeur ou destinataire de telles structures de données. Par exemple, example.proto génèrera les fichiers example.pb.cc et example.pb.h, définissant les classes C++ pour chaque message et service que example.proto déclare.
François Maréchal, Luc Girardin, Jessen Page, Gillian Jean Bernard Basso
Babak Falsafi, Alexandros Daglis, Siddharth Gupta, Mark Johnathon Sutherland, Dionysios Pnevmatikatos