Protocol Buffers v3

En este capítulo, analizaremos cómo usar los búferes de protocolo con el diseño de API. A fin de simplificar la experiencia del desarrollador y mejorar la eficiencia del entorno de ejecución, las API de gRPC deben usar la versión 3 de Protocol Buffers (proto3) para la definición de la API.

Protocol Buffers es un Lenguaje de definición de interfaz simple (IDL) independiente del lenguaje y de plataforma neutra para definir esquemas de estructura de datos y programar interfaces. Es compatible con los formatos de cable binarios y de texto, y funciona con varios protocolos de conexión estándar diferentes en plataformas distintas.

Proto3 es la versión más reciente de Protocol Buffers que incluye los cambios de proto2 siguientes:

  • La presencia de campo, también conocida como hasField, se quita de forma predeterminada para los campos básicos. Un campo básico sin configurar tiene un valor predeterminado definido por el lenguaje.
    • La presencia de un campo de mensaje aún está disponible y se puede probar con el método hasField generado por el compilador o compararlo con el valor nulo o el valor sentinel definido por la implementación.
    • A partir de protobuf v3.14, los campos primitivos pueden distinguir entre el valor predeterminado y el no establecido mediante el uso de la palabra clave optional, aunque esto no se recomienda en general.
  • El valor predeterminado definido por el usuario para los campos ya no está disponible.
  • Las definiciones de enumeración deben comenzar con el valor de enumeración cero.
  • Los campos obligatorios ya no están disponibles.
  • Las extensiones ya no están disponibles. Utiliza google.protobuf.Any en lugar de esta función.
    • Se otorga la excepción especial para google/protobuf/descriptor.proto por razones de compatibilidad inversa y de entorno de ejecución.
  • Se quita la sintaxis del grupo.

El motivo por el que se quitan estas características es para hacer que los diseños de la API sean más simples, más estables y eficaces. Por ejemplo, a menudo, es necesario filtrar algunos campos antes de registrar un mensaje, como la operación para quitar información sensible. Esto no sería posible si los campos fueran obligatorios.

Consulta Protocol Buffers para obtener más información.