Мне нужно реализовать архитектуру клиент-сервер, куда сервер отправляет
одно и то же сообщение для многих клиентов через Интернет.
Мне нужно отправлять одно сообщение каждые 5 минут.
Сообщение не будет превышать 5 КБ.
Мне нужно решение для масштабирования к большому количеству подключенных клиентов (50.000-100.000)
Я рассмотрел кучу решений:
Я думаю, что мне нужно отказаться от решения UDP, потому что это хорошее решение только для клиентов в одной сети, и оно не будет работать через Интернет.
Я где-то читал, что многоадресная рассылка WCF вызовет узкое место, если у меня подключено много клиентов, но я нигде не могу найти документацию, показывающую статистику производительности.
Tcp сокеты кажутся мне решением для выбора.
О чем вы думаете? Я прав?
Я определенно ошибаюсь, когда говорю, что UDP не работает в интернете ... Я подумал
это потому, что я прочитал несколько статей, указывающих, что вам нужно правильно
настроил маршрутизаторы в сети для поддержки многоадресной рассылки ... Я читал
диапазон многоадресной рассылки портов udp и думал, что это должно быть локально.
Вместо этого диапазон 224.0.0.1 - 239.255.255.255 (группа адресов класса D) может быть достигнут через Интернет
Учитывая, что в моем случае надежность не имеет решающего значения, многоадресная рассылка udp является хорошим выбором.
.NET Framework предлагает действительно полезные классы для достижения этой цели.
Я могу легко запустить UdpClient и начать отправлять данные по многоадресному адресу с двумя строками кода.
На стороне клиента это действительно легко.
Есть класс UdpSingleSourceMulticastClient, который делает именно то, что мне нужно.
Для обеспечения надежности и безопасности .net Framework имеет простой и удобный способ обработки DoS-атак, DNS-повторных привязок и туннельных атак Revers, описанный здесь: http://msdn.microsoft.com/en-us/library/ee707325(v=vs.95).aspx