Protocol Buffers
Protocol Buffers (também conhecido como protobuf) é um método de serialização de dados estruturados. É útil no desenvolvimento de programas que se comunicam uns com os outros ou para armazenar dados. O método envolve uma linguagem de descrição de interface que descreve a estrutura de dados e um programa que gera código-fonte a partir dessa descrição para a geração ou a análise de um fluxo de bytes que representa os dados estruturados.

O Google desenvolveu Protocol Buffers para usar internamente e ofereceu um gerador de código para várias linguagens em uma licença de código aberto.

As metas do design de Protocol Buffers enfatizaram a simplicidade e desempenho. Em particular, ele foi projetado para ser menor e mais rápido do que XML.

Protocol Buffers são amplamente utilizados pelo Google para o armazenamento e intercâmbio de vários tipos de informações estruturadas. O método serve como base para uma chamada de procedimento remoto (RPC) personalizada do sistema que é usado por quase todas as comunicações inter-máquina do Google.

Protocol Buffers são semelhantes ao Apache Thrift (utilizado pelo Facebook) e aos Microsoft Bond protocolos, oferecendo assim uma pilha de protocolos RPC concreta chamada gRPC.

Um desenvolvedor de software define estruturas de dados (chamadas de "mensagens") e serviços em um arquivo de definição proto (".proto") e os compila com um programa chamado "protoc". Esta compilação gera código que pode ser invocado por um remetente ou destinatário destas estruturas de dados. Por exemplo, "exemplo.proto" vai produzir "exemplo.pb.cc" e "exemplo.pb.h", que irão implementar classes de C++ para cada mensagem definida em "exemplo.proto".

Canonicamente, as mensagens são serializadas em um protocolo binário compacto, com compatibilidade reversa e direta, mas não são auto-descritivas (isto é, não há nenhuma maneira de saber os nomes, significados, ou tipos de dados dos campos de uma mensagem sem uma especificação externa). Não há nenhuma forma predefinida de incluir ou referir-se a essa especificação externa () dentro de um arquivo de Protocol Buffers. Implementações oficialmente suportadas incluem um formato de serialização em ASCII, mas este formato, embora auto-descritivo, perde o compatibilidade de comportamento reversa e direta, e não é, portanto, uma boa escolha para aplicações e deve ser usada somente para depuração.

Embora o objetivo principal de Protocol Buffers seja facilitar a comunicação em rede, sua simplicidade e velocidade fazem de Protocol Buffers uma alternativa para classes e estruturas em C++ centradas em dados, especialmente onde a interoperabilidade com outras linguagens ou sistemas pode ser necessária no futuro.
Q1127410
serialização
Concept
Q40056
programas
Concept
Q1044749
linguagem de descrição de interface
ORG
Q8799
byte
Concept
Q95
O Google
ORG
None
gerador de código
UNK
Q1130645
código aberto
Concept
Q2115
XML
ORG
Q95
Google
ORG
Q62270
chamada de procedimento remoto
Concept
None
Apache Thrift
UNK
Q355
Facebook
MEDIA
None
Microsoft Bond protocolos
UNK
None
gRPC
UNK
Q5482740
desenvolvedor de software
Concept
Q4479242
classes
Concept
Q2407
C++
MEDIA
Q844605
compatibilidade reversa
Concept
Q8815
ASCII
Concept
Q845566
depuração
Concept
Q4479242
classes
Concept
Q2407
C++
MEDIA
Q9143
linguagens
Concept
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
Q1645574
Protocol Buffers
MEDIA
instance of
developer
developer
instance of