Junior — Middle
Qual è la differenza tra la modalità di streaming dei dati del server e una singola chiamata in gRPC?
sobes.tech AI
Risposta dell'AI
In gRPC, si distinguono diversi modalità di trasmissione dei dati:
-
Chiamata singola (Unary RPC): il client invia una richiesta e riceve una risposta. È la classica richiesta-risposta.
-
Streaming dal server (Server Streaming RPC): il client invia una richiesta, e il server risponde con un flusso di messaggi. Il client legge i messaggi man mano che arrivano, fino a quando il server termina il flusso.
Differenze:
- Nella chiamata singola, lo scambio avviene una sola volta — richiesta e risposta.
- Nello streaming dal server, il server può inviare più messaggi in risposta a una singola richiesta, utile per trasmettere grandi volumi di dati o aggiornamenti in tempo reale.
Esempio in Go (streaming dal server):
func (s *server) ListFeatures(req *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
for _, feature := range features {
if inRange(feature.Location, req) {
if err := stream.Send(feature); err != nil {
return err
}
}
}
return nil
}