Например, у вас будут проблемы с различными активациями, моделями потоков, буферами, кадрированием, безопасностью и сериализацией, по крайней мере, в интеграционном или свернутом вручную коде. Это типично для любой работы UDP / TCP или config / attribute на любом языке или в любой среде. И все равно потребуется настройка в соответствии с потребностями сервера или клиента, что просто объясняет огромные возможности в работе ввода-вывода.
Полностью согласен, что WCF слишком раздутый и намного медленнее по сравнению с .NET Remoting (который медленнее, чем код управляемого сокета, который снова намного медленнее, чем собственный код iocp), для ручного свернутого кода. Но это дополнительная работа, и если Вы справились с вышеизложенным в общей универсальной библиотеке (не более мощные шаблоны, которые усложняют работу в .NET, т. е. вам приходится создавать типы нечетным образом + необходимо использовать интерфейс), чем вы хорошо справились, скажем, с человеком - год с какой-то сложной сантехникой в виде очереди сообщений (это не невозможно, но imho и ретроспектива никогда не стоит делать «в общем» ..).
Альтернативами являются MSMQ, то, на что MS все чаще ставит больше своего программного обеспечения, или наполовину биты с открытым исходным кодом, которые просто никогда не удовлетворяют модели, которая вам нужна полностью. Tibcos, ActiveMQs, вы называете это. Даже на более низком уровне лучше всего считается C ++ boost :: asio, и хотя он считается верхним, он, как и все остальное, подходит не для всех. И это довольно замечательный дизайн, так что я бы не упустил возможность потратить время впустую.
В .NET я сначала принял бы любой 50-поточный сервис, который MS продвигает «сегодня», а если нет, то сделал бы «снова похожий код» и искал бы аналогичные концепции для оснащения вашего инструментария, когда он появится снова ( как и каждый новый I / O lib или framework каждые 5 лет или около того).