El uso de listas en gRPC en protobuf.
Tengo una List
en mi servidor y quiero enviarla a mis clientes utilizando gRPC.
MyClass
se ve así:
public class MyClass
{
public long Value { get; set; }
public DateTime Time { get; set; }
public string Name { get; set; }
}
¿Cómo defino esta lista en protobuf y de qué forma se supone que debo anular el método generado?
Mi .proto actualmente se ve así:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
service MyService {
rpc GetValues(EmptyRequest) returns (MyResponse);
}
message EmptyRequest {
}
message MyResponse {
repeated int64 values = 1;
repeated google.protobuf.Timestamp time = 2;
repeated string name = 3;
}
davy.ai
Para definir
List<myclass>
en protobuf, puedes modificar el mensajeMyResponse
en tu archivo.proto
de la siguiente manera:En este mensaje modificado
MyResponse
, hemos reemplazado los tres camposrepeated
con un solo camporepeated MyClass
. Luego, hemos definido el mensajeMyClass
que tiene los mismos campos que la claseMyClass
en C#.No es necesario anular ningún método generado para manejar este cambio. El generador de código gRPC generará el código necesario para manejar el mensaje
MyResponse
con el campoList<myclass>
. Simplemente llama al métodoGetValues
en el lado del cliente, y el código de cliente generado te dará un objetoMyResponse
que contiene el campoList<myclass>
.