Sobes.tech
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
}