Sobes.tech
Junior — Middle

gRPCдеги эки тараптуу маалымат агымын түшүндүрүңүз.

sobes.tech AI

AIден жооп

gRPCдө эки тараптуу агым (bidirectional streaming) клиентке жана серверге бир убакта билдирүү агымдарын жиберүүгө жана кабыл алууга мүмкүндүк берет.

Бул эки тарап өз алдынча жана параллелдүү маалыматтарды өткөрө алат, бул интерактивдүү алмашуу сценарийлери үчүн пайдалуу, мисалы, чат, агымдагы маалыматтарды жаңыртуу же реалдуу убакытта эки тараптуу байланыш.

C#да бул асинхрондук ыкмалар аркылуу ишке ашырылат, алар AsyncDuplexStreamingCall<TRequest, TResponse> объектисин кайтарат. Клиент жана сервер агымда билдирүүлөрдү асинхрондук түрдө окуп жана жазыша алышат.

Сервер тараптагы мисал:

public override async Task Chat(
    IAsyncStreamReader<ChatMessage> requestStream,
    IServerStreamWriter<ChatMessage> responseStream,
    ServerCallContext context)
{
    await foreach (var message in requestStream.ReadAllAsync())
    {
        Console.WriteLine($"Кабыл алынды: {message.Text}");
        await responseStream.WriteAsync(new ChatMessage { Text = "Эхо: " + message.Text });
    }
}

Бул жерде сервер клиенттен келген билдирүүлөрдү окуп, дароо жооп жиберет, эки тараптуу маалымат агымын сактап калуу менен.