Sobes.tech
Junior — Middle

Expliquez le concept de transmission bidirectionnelle de données dans gRPC.

sobes.tech IA

Réponse de l'IA

La transmission bidirectionnelle de données (streaming bidirectionnel) dans gRPC permet au client et au serveur d’envoyer et de recevoir simultanément des flux de messages dans le cadre d’une seule connexion.

Cela signifie que les deux parties peuvent transmettre des données de manière indépendante et parallèle, ce qui est utile pour des scénarios d’échange interactif, comme le chat, la mise à jour en streaming des données ou la communication bidirectionnelle en temps réel.

En C#, cela est réalisé via des méthodes asynchrones qui renvoient un objet AsyncDuplexStreamingCall<TRequest, TResponse>. Le client et le serveur peuvent lire et écrire des messages dans le flux de manière asynchrone.

Exemple d’utilisation côté serveur :

public override async Task Chat(
    IAsyncStreamReader<ChatMessage> requestStream,
    IServerStreamWriter<ChatMessage> responseStream,
    ServerCallContext context)
{
    await foreach (var message in requestStream.ReadAllAsync())
    {
        Console.WriteLine($"Reçu : {message.Text}");
        await responseStream.WriteAsync(new ChatMessage { Text = "Écho : " + message.Text });
    }
}

Ici, le serveur lit les messages du client et envoie une réponse immédiatement, en maintenant un flux bidirectionnel de données.