Questo capitolo illustra come utilizzare i buffer di protocollo con la progettazione delle API. Per semplificare l'esperienza degli sviluppatori e migliorare l'efficienza del runtime, le API gRPC dovrebbero utilizzare il buffer di protocollo versione 3 (proto3) per la definizione dell'API.
Protocol Buffer è un semplice IDL (neutral-neutral di lingua e di piattaforma) per la definizione di schemi di struttura dei dati e interfacce di programmazione. Supporta formati di cavi binari e di testo e funziona con molti protocolli di cavo diversi su piattaforme diverse.
Proto3 è l'ultima versione di Protocol Buffer e include le seguenti modifiche rispetto al protocollo proto2:
- La presenza di campi, nota anche come
hasField
, viene rimossa per impostazione predefinita per i campi primitivi. Un campo primitivo non impostato ha un valore predefinito definito dalla lingua.- È ancora disponibile la presenza di un campo messaggio, che può essere testato
con il metodo
hasField
generato dal compilatore oppure confrontarlo con un valore nullo o il valore di sentinel definito dall'implementazione. - A partire dalla versione 3.14 del protocollo protobuf, i campi primitivi possono fare distinzione tra il valore predefinito e il valore non impostato utilizzando la parola chiave
optional
, sebbene ciò sia generalmente sconsigliato.
- È ancora disponibile la presenza di un campo messaggio, che può essere testato
con il metodo
- Il valore predefinito definito dall'utente per i campi non è più disponibile.
- Le definizioni di enumerazione devono iniziare con il valore di enumerazione zero.
- I campi obbligatori non sono più disponibili.
- Le estensioni non sono più disponibili. Usa invece il criterio
google.protobuf.Any
.- Eccezione speciale concessa per
google/protobuf/descriptor.proto
per motivi di compatibilità con le versioni precedenti e di runtime.
- Eccezione speciale concessa per
- La sintassi del gruppo è stata rimossa.
La rimozione di queste funzionalità ha lo scopo di rendere i progetti API più semplici, più stabili e più performanti. Ad esempio, spesso è necessario filtrare alcuni campi prima di registrare un messaggio, come la rimozione di informazioni sensibili. Questa operazione non sarebbe possibile se i campi sono obbligatori.
Per ulteriori informazioni, consulta la sezione Buffer di protocollo.