Esta página foi traduzida pela API Cloud Translation.
Switch to English

Buffers de protocolo v3

Neste capítulo, será discutido como usar os Buffers de protocolo com projeto de API. Para simplificar a experiência do desenvolvedor e melhorar a eficiência do ambiente de execução, as APIs gRPC precisam usar buffers da terceira versão do protocolo (proto3) para fazer a definição das APIs.

Os Buffers de protocolo são uma Linguagem de definição de interface (IDL, na sigla em inglês) simples e neutra em relação à plataforma e à linguagem para definição de esquemas de estrutura de dados e interfaces de programação. Eles são compatíveis com formatos de conexão binária e de texto e funcionam com vários protocolos de conexão diferentes em diferentes plataformas.

O proto3 é a última versão dos Buffers de protocolo e inclui as seguintes alterações em relação ao proto2:

  • A presença de campo, também conhecida como hasField, não está disponível para campos primitivos. Um campo primitivo não definido tem um valor padrão definido pela linguagem.
    • A presença de um campo de mensagem ainda está disponível, o que pode ser testado usando o método hasField gerado pelo compilador ou comparado a nulo/ ao valor sentinela definido pela implementação.
  • O valor padrão definido pelo usuário para campos não está mais disponível.
  • As definições do enum precisam começar com valor de enum zero.
  • Os campos obrigatórios não estão mais disponíveis.
  • As extensões não estão mais disponíveis. Use google.protobuf.Any.
    • Uma exceção especial é concedida para google/protobuf/descriptor.proto por motivos de compatibilidade com versões anteriores e ambientes de execução.
  • A sintaxe do grupo foi removida.

O motivo para remover esses recursos é tornar os projetos da API mais simples, estáveis ​​e com maior desempenho. Por exemplo, muitas vezes é necessário filtrar alguns campos antes de registrar uma mensagem, como a remoção de informações confidenciais. Isso não seria possível se os campos fossem obrigatórios.

Consulte Buffers de protocolo para mais informações.