2015-04-08 9 views
8

Google usunął nieznane pola w protokole proto3. Chciałbym usłyszeć uzasadnienie tego wyboru. Ponadto, jeśli ktoś ma jakiś sposób na odtworzenie zachowania proto2, chciałbym to usłyszeć.Jak można odtworzyć funkcje pola nieznanego w proto3?

Jeśli to ma znaczenie, piszemy nasz kod w Go.

Gdy proto3 i grpc zostały opracowane równolegle, chciałem również dotrzeć do społeczności Grpc.

Źródło: Removal of unknown fields

+1

Nie chodzi o to, do kogo "sięga się". Zadajesz pytanie dotyczące buforów protokołów. gRPC to zupełnie inna sprawa. Jasne, są powiązane, ale twoje pytanie nie dotyczy * o * gRPC. – murgatroid99

+0

Wygląda na to, że nie powiedzieli zbyt wiele. Przypuszczam, że może to oczyści interfejs: gRPC [po prostu wypełnia twoje struktury] (http://godoc.org/google.golang.org/grpc#Stream) podczas gdy proto [musi przekazać ci wiadomość do przekazania] (http://godoc.org/github.com/golang/protobuf/proto#Unmarshal) (i musisz go przekazać dalej, aby zachować bezpieczną aplikację w polu). Mogli uważać, że bezpieczniejsze jest uaktualnianie razem wywołujących i wywołujących, w ten sam sposób, jak na przykład, gdy metoda Go dodaje parametr, którego wymagają również jego rozmówcy. W celu obejścia tego problemu możesz użyć map protokołu proto3 dla nowych pól. – twotwotwo

+1

Może podać konkretny przypadek użycia, dla którego użyto pól "nieznanych"? – drozzy

Odpowiedz

2

Pozbycie obecności pola dla prymitywów sprawia Protobuf bardziej „naturalne” i skuteczne w wielu językach, od pierwotnych w C/C++, Java, C# i przejść muszą być obecne. W takich językach, jeśli chcesz uzyskać informacje o obecności, "zapakuj" prymityw, czyniąc go wskaźnikiem dla prymitywu.

Protobuf 3 pozbywa się obecności prymitywów, ale wciąż ma to dla wiadomości. W ten sposób możesz użyć tej samej techniki "boksowania" dla Protobuf. Protobuf ma teraz standard messages that box primitives.

Powiązane problemy