gRPC entre microservicios .NET
El contrato .proto, fuente única de verdad
.proto : describe los mensajes y el servicio, con independencia del lenguaje. Es el contrato — ni el cliente ni el servidor lo escriben a mano. Se declara un service Pricing que expone una llamada rpc GetQuote (QuoteRequest) que devuelve un QuoteReply , con cada campo numerado ( string sku = 1; , int32 quantity = 2; ) — estos números son la clave de la compatibilidad ascendente: nunca se reutiliza uno.
.csproj mediante <Protobuf Include="pricing.proto" /> . El paquete Grpc.Tools genera entonces, en tiempo de compilación, la clase base del servidor y el cliente tipado — ningún DTO que copiar:
Servidor y cliente tipados
Pricing.PricingBase y sobreescribe el método. Sin enrutamiento que cablear, sin deserialización manual: se recibe un mensaje fuertemente tipado.
HttpClient . Se inyecta el cliente generado mediante AddGrpcClient , y se llama como un método local:
El streaming, el argumento decisivo
stream del lado del servidor envía resultados a medida que se producen; un stream bidireccional abre un canal full-duplex ideal para telemetría o chat. Se escribe en un IServerStreamWriter<T> y el cliente itera con await foreach — sin polling, sin WebSocket que improvisar.
gRPC frente a REST: elegir con conocimiento de causa
El reflejo sano: REST en la fachada pública, gRPC en el interior . El contrato .proto se convierte entonces en la frontera formal entre sus servicios — versionado, compartido, verificado por el compilador.