2015-05-07 6 views
6

Ich habe zwei verschiedene Möglichkeiten gesehen, einen gRPC-Dienst mit Protobuf v3 zu deklarieren. Einige Code hat die rpc line end with a semicolon (wie die aktuelle proto3 Dokumentation):gRPC/Protobuf 3 Syntax: Was ist der Unterschied zwischen RPC-Zeilen, die mit Semikolon gegen '{}' enden?

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

Andere code has the rpc line end with{}:

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

Beide kompilieren mit dem Protoc v3.0.0-alpha-2-Compiler und produzieren die Gleicher (go) Code.

Was ist der Unterschied zwischen den beiden Syntaxen?

Antwort

5

Nichts, wirklich; sie sind gleichwertig.

Die Syntax {} wird verwendet, wenn Optionen vorhanden sind. Wenn Sie keine Optionen angeben, funktioniert jede der beiden Syntax (genau wie in C!).

+0

Danke! Haben Sie etwas, das Optionen anzeigt? – psanford

+2

https://github.com/gengo/grpc-gateway verwendet diese für die REST → gRPC-Konvertierung (FYI: Dort können Sie in einem PR die Anmerkungen unter https://github.com/google/googleapis/tree austauschen/master/google/api). Dinge wie Timeout könnten eventuell auch mit einer Option spezifiziert werden, aber ich denke nicht, dass diese noch definiert sind. –