Compatibilité et support
ProtoBuf est supporté par de nombreux langages.
Certains le gèrent nativement. D’autres nécessitent un outil en ligne de commande.
Trois versions existent :
- Proto 1 : obsolète.
- Proto 2 : encore utilisée.
- Proto 3 : la plus récente. À privilégier.
Proto 3 n’impose plus les champs required.
Tous les champs sont facultatifs par défaut.
L’avantage est que les messages seront toujours compatibles cependant si un champ est nécessaire, il sera obligatoire de le mettre en required. De ce fait, protobuf gérera directement la vérification.
Utilisations possibles
ProtoBuf peut être utilisé seul.
Mais aussi avec des protocoles comme gRPC, MQTT, REST...
Il suffit que tous les composants du système partagent le même fichier .proto et surtout la même version de celui-ci.
Cas d’usage :
- Communication entre microservices.
- Transfert de données entre équipes/langages différents.
- Sérialisation rapide pour stockage ou transport.
Visualisation côté code
Une fois compilés, les messages et enum sEn résumé, pourquoi choisir ProtoBuf (vs JSON, XML)
Caractéristiques
Description
Format Binaire
Langages supportés Multi-langages (Python, C#, etc.)
Compilation À partir de fichiers .proto
Dépendances Aucune après compilation
Performance Supérieure à JSON/XML
Version recommandée Proto 3ont disponibles comme des objets classiques.
Pas besoin de parsing manuel.
L’exemple en .NET affiche clairement les champs générés : title, type, content, etc.
Exemple de compilation et usage du .proto en .NET
Envoyer un objet « SendMessages »
Il contient :
- un titre global
- un niveau de confidentialité de type Message Types
- Une liste de messages de type Body qui contiennent chacun : une liste de texte et optionnellement une entête et un pied de page
- Optionnellement la taille du message