2015-05-07 22 views
6

Widziałem dwa różne sposoby deklarowania usługi gRPC za pomocą Protobuf v3. Część kodu ma rpc line end with a semicolon (takie jak w przypadku dokumentów proto3)Składnia gRPC/Protobuf 3: jaka jest różnica między wierszami rpc, które kończą się średnikiem a "{}"?

service SearchService { 
    rpc Search (SearchRequest) returns (SearchResponse); 
} 

Inne code has the rpc line end with{}:

service Greeter { 
    rpc SayHello (HelloRequest) returns (HelloReply) {} 
} 

Oba kompilacji z protoc v3.0.0 alfa-2, kompilator i wytwarzania ten sam (go) kod.

Jaka jest różnica między tymi dwiema składniami?

Odpowiedz

5

Nic, naprawdę; są one równoważne.

Składnia {} jest używana, gdy istnieją opcje. Jeśli nie określisz żadnych opcji, działa jakaś składnia (tak jak w C!).

+0

Dzięki! Czy masz coś, co pokazuje opcje w użyciu? – psanford

+2

https://github.com/gengo/grpc-gateway używa ich do REST → konwersji gRPC (FYI: tam w PR, aby zamienić adnotacje na te na https://github.com/google/googleapis/tree/master/google/api). Rzeczy takie jak timeout mogą również zostać określone za pomocą opcji, ale nie sądzę, że są one jeszcze zdefiniowane. –