Explique o conceito de transmissão de dados bidirecional no gRPC.
sobes.tech IA
Resposta da IA
A transmissão de dados bidirecional (streaming bidirecional) no gRPC permite que o cliente e o servidor enviem e recebam fluxos de mensagens simultaneamente dentro de uma única conexão.
Isto significa que ambas as partes podem transmitir dados de forma independente e paralela, o que é útil para cenários de troca interativa, como chat, atualização de dados em streaming ou comunicação bidirecional em tempo real.
Em C#, isto é implementado através de métodos assíncronos que retornam um objeto AsyncDuplexStreamingCall<TRequest, TResponse>. O cliente e o servidor podem ler e escrever mensagens no fluxo de forma assíncrona.
Exemplo de uso no lado do servidor:
public override async Task Chat(
IAsyncStreamReader<ChatMessage> requestStream,
IServerStreamWriter<ChatMessage> responseStream,
ServerCallContext context)
{
await foreach (var message in requestStream.ReadAllAsync())
{
Console.WriteLine($"Recebido: {message.Text}");
await responseStream.WriteAsync(new ChatMessage { Text = "Eco: " + message.Text });
}
}
Aqui, o servidor lê mensagens do cliente e envia uma resposta imediatamente, mantendo um fluxo bidirecional de dados.