Quiero usar gRPC con .NET core 3 en una aplicación web básica asp.net. ¿Cómo genero el archivo .proto necesario a partir de una clase C # existente y objetos de modelo? No quiero volver a escribir un archivo .proto que refleje el código existente, quiero que el archivo .proto se genere automáticamente a partir de los objetos de clase y modelo.
Llamo a este método para registrar mi clase de servicio.
builder.MapGrpcService<MyGrpcService>();
public class MyGrpcService
{
public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
{
return Task.FromResult("It Worked");
}
}
ModelObject
tiene [DataContract]
y [DataMember]
con atributos de orden.
es posible? Cada ejemplo que veo en línea comienza con un .proto
archivo. Ya he definido mis métodos de servicio deseados en la MyGrpcService
clase. Pero tal vez esto es solo hacia atrás a lo que es la forma estándar de hacer las cosas ...
Algo así como el antiguo control remoto .NET sería ideal donde solo puede solicitar una interfaz desde un punto final remoto y se usa mágicamente gRPC
para comunicarse de un lado a otro, pero tal vez esa sea una vista demasiado simplista.
fuente
Respuestas:
Puedes usar Marc Gravell
protobuf-net.Grpc
para esto. Tener una experiencia de código primero al crear servicios gRPC es el caso de uso exacto por el que comenzó a trabajar en él. Se basa además de loprotobuf-net
cual ya agrega capacidades de serialización entre los tipos de C # y protobuf.Consulte la documentación para ver cómo comenzar a usar la biblioteca, o incluso vea a Marc presentar este tema en una de las siguientes grabaciones de su charla "Hablando entre servicios con gRPC y otros trucos":
Creo que en realidad actualizó el de septiembre para los bits de lanzamiento de .NET Core 3.0, por lo que probablemente sería la versión más actualizada.
También hay algunos ejemplos de código para ver cómo se ve esto cuando lo configura.
fuente