Dados
O que é um arquivo .proto?
.proto é um arquivo de esquema que descreve mensagens, campos e tipos do Protocol Buffers. Um compilador como o protoc lê esse arquivo e gera código para as linguagens escolhidas. O .proto não é uma mensagem serializada; normalmente, ele é editado como texto.
Quando escolher este formato
- Gerar código para diferentes linguagens com protoc
- Definir mensagens para RPC e comunicação entre serviços
Quando evitar este formato
- Armazenar diretamente mensagens já serializadas
- Alterar um esquema sem conferir os números dos campos e os sistemas que o utilizam
Usos comuns
- Definir a estrutura de mensagens do Protocol Buffers
- Compartilhar contratos de dados entre linguagens
Características
- Declara mensagens e tipos de campo
- Atribui números de campo usados na representação binária
- Tem sintaxes como proto2, proto3 e editions
Vantagens e desvantagens
Vantagens
- Uma definição pode gerar código para várias linguagens
- Tipos e números de campo explícitos ajudam a compartilhar um contrato de dados
Desvantagens
- Quem consome o esquema precisa de compilador ou biblioteca compatível
- Alterações precisam seguir as regras de compatibilidade de números e tipos de campo
Abrir e converter
Como abrir
Abra em um editor de texto ou IDE com suporte a Protocol Buffers. Para validar sintaxe e imports, compile com a versão do protoc e as configurações usadas pelo projeto.
Como converter
Ao migrar para outro formato de esquema, mapeie tipos, números de campo, valores padrão, enums e regras de compatibilidade. Depois gere o código e teste dados reais. Trocar a extensão para .json ou para uma extensão binária não converte o arquivo.
Cuidados
- Não reutilize números de campos existentes. Reserve os números removidos para evitar que sejam usados por engano no futuro.
- O código gerado pelo esquema e as mensagens serializadas no wire format do Protocol Buffers são coisas diferentes.
- proto2, proto3 e editions têm diferenças de sintaxe e comportamento dos campos; confira a declaração do arquivo e as versões das ferramentas.
Perguntas frequentes
Um arquivo .proto contém os dados da mensagem?
Não. Ele define o esquema da mensagem. O código gerado e a biblioteca do Protocol Buffers serializam os dados separadamente.
O que pode ser gerado a partir de um .proto?
O protoc e os plugins compatíveis podem gerar código dos tipos de mensagem para as linguagens configuradas.