У меня проблемы с низкой производительностью при использовании именованного канала Windows. Пропускная способность быстро падает с увеличением задержки в сети. Существует примерно линейная зависимость между сообщениями, отправляемыми в секунду, и временем прохождения туда и обратно. Кажется, что клиент должен подтвердить каждое сообщение, прежде чем сервер отправит следующее. Это приводит к очень низкой производительности, я могу отправлять только 5 (~ 100 байт) сообщений в секунду по каналу с RTT 200 мс.
Канал асинхронный, использует несколько операций записи с перекрытием (и несколько операций чтения с перекрытием на стороне клиента), но это не улучшает пропускную способность. Можно ли отправлять сообщения параллельно по именованному каналу? Канал создается с использованием PIPE_TYPE_MESSAGE, будет ли PIPE_READMODE_BYTE работать лучше? Есть ли другой способ улучшить производительность?
Это развернутое решение, поэтому я не могу просто заменить канал подключением через сокет (я читал, что именованный канал Windows не рекомендуется использовать по глобальной сети, и мне интересно, почему ). Буду благодарен за любую помощь в этом вопросе.