There are tradeoffs with either approach. The repeated field approach is
akin to batching, and requires all of the messages to be prepared by the
server before any are sent, and the entire set of messages to be received
by the client before doing any processing, increasing latency. On the other
hand, if the repeated fields are highly compressible as a batch, sending
them all as a single message will allow gRPC's per-message compression to
reduce the message size (gRPC streaming compression is work in progress,
and would allow the stream approach to also benefit from compression across
multiple messages).

In general, if your use case would allow the client to process the incoming
messages one at a time, the stream is the better choice. If your client
will just be blocking until all of the messages arrive and then processing
them in aggregate, the repeated field may be appropriate, but even in this
scenario the stream would work just as well, except for losing some
potential compressibility.

Eric

On Fri, Mar 31, 2017 at 8:39 AM, 'Julien' via grpc.io <
[email protected]> wrote:

> Hello.
>
> I need to get a list of messages from server to client.
> I see two possible ways to implement this:
> 1.
>   - define the message
>   - define a service with a function which returns a stream of the message
>
> 2.
>   - define the message
>   - define a second message with a repeated field of the first message
>   - define a service with a function which returns the second message
>
> Here is an example:
>
> syntax = "proto3";
>
> import "google/protobuf/empty.proto";
>
> message Dummy {
>   string foo = 1;
>   string bar = 2;
> }
>
> message DummyList {
>   repeated Dummy dummy = 1;
> }
>
> service DummyService {
>   rpc getDummyListWithStream(google.protobuf.Empty) returns (stream Dummy)
> {}
>   rpc getDummyListWithRepeated(google.protobuf.Empty) returns (DummyList)
> {}
> }
>
>
> What is the most efficient way to implement this?
> getDummyListWithStream or getDummyListWithRepeated?
> Note: client and server are both written in C++.
>
> Thanks.
>
> Julien
>
> --
> You received this message because you are subscribed to the Google Groups "
> grpc.io" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/grpc-io.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/grpc-io/b8e554c0-c1c3-4877-b1ad-082e1945ad83%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/b8e554c0-c1c3-4877-b1ad-082e1945ad83%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CALUXJ7hSZjpqYKiNfDFtnqLkQOLJxMQT_Tq3E9P-cJnGoZwKUQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to