Protocol Buffers
|
|
Cet article est une ébauche concernant l’informatique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
|
| Protocol Buffers | |
| Développeur | |
|---|---|
| Dernière version | 2.4.0 (2 février 2011) |
| Type | Bibliothèque et format de sérialisation, compilateur IDL |
| Licence | Licence BSD |
| Site web | code.google.com/apis/protocolbuffers |
| modifier |
|
Protocol Buffers 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[1].
Sommaire |
Exemple[modifier]
message Point { required int32 x = 1; required int32 y = 2; optional string label = 3; } message Line { required Point start = 1; required Point end = 2; optional string label = 3; } message Polyline { repeated Point point = 1; optional string label = 2; }
Le message « Point » définit deux propriétés obligatoires, « x » et « y ». La propriété « label » est facultative. Chaque propriété a une étiquette, définie par un signe égal, par exemple « x » a l'étiquette 1.
Les messages « Line » et « Polyline » sont composés, ils utilisent « Point » dans leurs définitions. Le champ de type « repeated » (répétition) dans Polyline agit comme un vecteur.
Cette définition est ensuite compilé, en appelant protoc, pour être utilisée par un logiciel C++ de la manière suivante :
#include "polyline.pb.h" // généré en appelant protoc polyline.proto (définition ci-dessus) Line* createNewLine(const std::string& name) { Line* line = new Line; line->mutable_start()->set_x(10); line->mutable_start()->set_y(20); line->mutable_end()->set_x(30); line->mutable_end()->set_y(40); line->set_label(name); return line; } Polyline* createNewPolyline() { Polyline* polyline = new Polyline; Point* point1 = polyline->add_point(); point1->set_x(10); point1->set_y(10); Point* point2 = polyline->add_point(); point2->set_x(10); point2->set_y(10); return polyline; }
Articles connexes[modifier]
- Apache Thrift
- Abstract Syntax Notation One (ASN.1)
- Etch de Cisco
- « M » de Microsoft
- Internet Communications Engine (ICE) de ZeroC