Библиотека многопоточного сетевого UDP-сервера для .net

Есть ли что-то вроде витой (python) или eventmachine (ruby) в .net land?

Мне вообще нужна эта абстракция? Я слушаю одно устройство ввода-вывода, которое будет отправлять мне события для трех или четырех подключенных к нему аналоговых датчиков. Каковы риски простого использования зацикленного UdpClient? Я не могу пропустить ни одного события, но будет ли стек ip обрабатывать очереди сообщений для меня? Зависит ли все это от того, какую работу пытается выполнить поток после получения сообщения?

То, что я ищу в абстракции, - это избавить от проблемы многопоточность и синхронизацию.

7 голосов | спросил Sam Coles 12 FebruaryEurope/MoscowbFri, 12 Feb 2010 02:58:46 +0300000000amFri, 12 Feb 2010 02:58:46 +030010 2010, 02:58:46

4 ответа


0

Я думаю, ты делаешь это слишком сложным. Просто откройте 1 сокет UDP и установите на него асинхронный обратный вызов. Для каждого входящего пакета поместите его в очередь и снова установите обратный вызов. Вот и все.

убедитесь, что при постановке в очередь и снятии очереди вы устанавливаете блокировку очереди.

это так просто, и производительность будет отличной.

R

ответил Toad 12 FebruaryEurope/MoscowbFri, 12 Feb 2010 12:39:03 +0300000000pmFri, 12 Feb 2010 12:39:03 +030010 2010, 12:39:03
0

Я бы порекомендовал ICE это механизм связи, который будет абстрагировать потоки и связь с вами (документация исчерпывающим).

ответил call me Steve 12 FebruaryEurope/MoscowbFri, 12 Feb 2010 05:20:36 +0300000000amFri, 12 Feb 2010 05:20:36 +030010 2010, 05:20:36
0

Проблема в том, что с Udp вы автоматически принимаете на себя риск потери пакетов. Я прочитал документацию по ICE (как предложил Стив), и она очень исчерпывающая. Похоже, что ICE будет работать для Udp, однако, похоже, что Tcp предпочитают разработчики. Из документации ICE я понял, что в ней нет каких-либо интенсивных механизмов для обеспечения надежной связи Udp.

На самом деле очень легко настроить асинхронный клиент или сервер Udp. Ваша настоящая работа заключается в проверке полных пакетов и буферизации. Асинхронные реализации должны удерживать вас от управления потоками.

ответил IAbstract 12 FebruaryEurope/MoscowbFri, 12 Feb 2010 10:34:08 +0300000000amFri, 12 Feb 2010 10:34:08 +030010 2010, 10:34:08
0

Похоже, вы ищете надежную многоадресную рассылку. Попробуйте RMF . надежность и доставлять сообщения с помощью асинхронных обратных вызовов из очереди входящих сообщений. IBM также делает WebSphere, который имеет компонент UDP. EmCaster также возможен, однако, похоже, что его разработка прекратилась еще в 2008 году.

Если вы не собираетесь передавать эти пакеты (или события) на другие машины, вы можете просто использовать что-то простое, например файлы с отображением в памяти или другие формы IPC.

ответил Durian 8 Mayam13 2013, 05:44:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132