.NET проект для обмена сообщениями TCP - PullRequest
0 голосов
/ 22 апреля 2009

Существует ли в .NET проект с открытым исходным кодом или инфраструктура, которая обеспечивает базовую "связь" для обмена сообщениями между клиентом (-ами) и сервером по TCP? Кажется, что одна из тех вещей, когда я заканчиваю тем, что пишу по существу одно и то же снова и снова, и я бы хотел отвлечься от этого немного больше и разобраться с особенностями моего приложения вместо того, чтобы писать еще один наполовину механизм для обмена сообщениями по TCP.

Надеюсь, что-то меньше / проще, чем WCF. Мне действительно интересно что-то легковесное, которое не пытается решить все проблемы.

Ответы [ 4 ]

3 голосов
/ 22 апреля 2009

Например, у вас будут проблемы с различными активациями, моделями потоков, буферами, кадрированием, безопасностью и сериализацией, по крайней мере, в интеграционном или свернутом вручную коде. Это типично для любой работы 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 лет или около того).

3 голосов
/ 22 апреля 2009

WCF имеет много встроенных гаек и болтов. Хотя я на самом деле не пытался реализовать это сам.

2 голосов
/ 22 апреля 2009

Если вам нужно больше, чем просто поддержка обмена сообщениями, взгляните на . Remoting поддержку .

0 голосов
/ 22 апреля 2009

Вы также можете попробовать проект Indy.net.

Первоначально он был написан на Delphi, но именно это он и должен делать.

...