Каковы основные недостатки каналов Windows для межпроцессного взаимодействия?
Допустим, вы разбиваете монолитную программу Windows на компоненты многократного использования, которые могут взаимодействовать друг с другом, используямежпроцессного взаимодействия (IPC), и по любой причине вы выбираете анонимные каналы (например, запускаете несколько Process-ов и подключаете Console.Out к Console.In следующего процесса или просто используете «|» в командной строке).
Статья доктора Доббса с примеромс именованными трубами:
Какое будет снижение производительности по сравнению с другими методами IPC на той же машине? И что станет первой проблемой при увеличении количества процессов или количества передаваемых данных?
Например. Если бы вместо каналов мы использовали файлы, мы столкнулись бы с проблемами блокировки и скоростью диска.
Обратите внимание, что при необходимости сериализации передаваемых структур данных уже есть издержки, которые являются моей базой для потери эффективности.
PS. Интерес к каналам заключается в том, что их легко реализовать в каждом процессе (Console.Readline, Console.WriteLine), легко писать для них MSMQ и асинхронные HTTP-интерфейсы, а также любовь к Unix и командной строке.