2015-04-08 9 views
8

Google ha rimosso i campi sconosciuti in proto3. Mi piacerebbe sentire il ragionamento dietro questa scelta. Inoltre, se qualcuno ha modo di replicare il comportamento di proto2 mi piacerebbe sentirlo.In che modo la funzionalità di campo sconosciuta può essere replicata in proto3?

Se è importante, stiamo scrivendo il nostro codice in Go.

Poiché proto3 e grpc sono stati sviluppati in parallelo, volevo raggiungere anche la community di grpc.

Fonte: Removal of unknown fields

+1

Non si tratta di chi "stai cercando di raggiungere". Stai facendo una domanda su Buffer del protocollo. gRPC è una cosa diversa. Certo, sono correlati, ma la tua domanda non è * su * gRPC. – murgatroid99

+0

Sembra che non abbiano detto molto. Come supposizione, forse pulisce l'interfaccia: gRPC [riempie semplicemente le tue strutture] (http://godoc.org/google.golang.org/grpc#Stream) mentre proto [ha bisogno di darti un messaggio per passare insieme] (http://godoc.org/github.com/golang/protobuf/proto#Unmarshal) (e devi effettivamente passarlo per mantenere la tua app sconosciuta sul campo). Potrebbero aver pensato che fosse più sicuro far sì che i chiamanti e i calle si aggiornassero insieme, nello stesso modo in cui, ad esempio, quando un metodo Go aggiunge un parametro, i suoi chiamanti devono anche aggiornarsi. Come soluzione, potresti usare le mappe di proto3 per i nuovi campi. – twotwotwo

+1

Forse fornire un caso d'uso specifico per il quale hai usato i campi "sconosciuti"? – drozzy

risposta

2

Come liberarsi della presenza di campo per le primitive rende Protobuf più "naturale" ed efficiente in molte lingue, dal momento che i primitivi in ​​C/C++, Java, C#, e Go deve essere presente. In tali linguaggi, se si desiderano informazioni di presenza, si "inscatola" la primitiva rendendola un puntatore a una primitiva.

Protobuf 3 elimina la presenza per i primitivi ma ne ha ancora per i messaggi. Quindi, puoi usare la stessa tecnica di "boxe" per Protobuf. Protobuf ora ha standard messages that box primitives.

Problemi correlati