Junior — Middle
Selgitage gRPC-s kahepoolse andmevoo kontseptsiooni.
sobes.tech AI
Vastus AI-lt
gRPC-s kahe suunaga voogedastus (bidirectional streaming) võimaldab kliendil ja serveril samaaegselt saata ja vastu võtta sõnumi vooge ühe ühenduse raames.
See tähendab, et mõlemad pooled saavad sõltumatult ja paralleelselt andmeid edastada, mis on kasulik interaktiivsete vahetuste, näiteks vestluse, andmevoogude uuenduste või reaalajas kahepoolse suhtluse jaoks.
C#-s realiseeritakse seda asünkroonsete meetodite kaudu, mis tagastavad objekti AsyncDuplexStreamingCall<TRequest, TResponse>. Klient ja server saavad lugeda ja kirjutada sõnumeid voos asünkroonselt.
Serveri näide:
public override async Task Chat(
IAsyncStreamReader<ChatMessage> requestStream,
IServerStreamWriter<ChatMessage> responseStream,
ServerCallContext context)
{
await foreach (var message in requestStream.ReadAllAsync())
{
Console.WriteLine($"Saadetud: {message.Text}");
await responseStream.WriteAsync(new ChatMessage { Text = "Eho: " + message.Text });
}
}
Siin loeb server sõnumeid kliendilt ja saadab kohe vastuse, säilitades kahepoolse andmevoo.