Сведения о вопросе

rjevskii

01:20, 10th August, 2020

Теги

.net   networking   remoting   udp   broadcast    

Автоматическое обнаружение удаленных серверов. Транслировать или нет?

Просмотров: 466   Ответов: 5

У меня есть клиент / серверное приложение, которое взаимодействует с .Net remoting. Мне нужно, чтобы мои клиенты могли найти сервер(ы) в сети, не требуя настройки на стороне клиента.

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

Я хочу услышать коллективную мудрость SO, прежде чем идти вперед. Разве это лучший способ? Есть еще какие-нибудь предложения?



  Сведения об ответе

PAGE

23:49, 29th August, 2020

Я рассматривал как SSDP, так и UPnP для этого типа функциональности, но я бы рекомендовал пойти с пользовательским решением UDP multicast . В принципе, многоадресная рассылка очень похожа на широковещательную, но связываются только машины, которые присоединились к группе многоадресной рассылки (т. е. запросили широковещание).

IMHO, SSDP и UPnP, раздутые и чрезмерно сложные для обнаружения ресурсов... но эй, это же стандарт. ;)


  Сведения об ответе

prince

02:35, 22nd August, 2020

Похоже, что вам нужен простой протокол обнаружения служб или SSDP. Это реализовано в Windows как часть поддержки Microsoft для Universal Plug and Play . Поскольку это стандартный отраслевой протокол, это кажется хорошей ставкой. Например, если вы хотите иметь дело с брандмауэрами или другими проблемами, это будет выяснено другими, а не вам придется свернуть свое собственное решение.

Поскольку вы говорите .NET, я предполагаю, что вы находитесь на Windows. Есть несколько старый документ (2001), описывающий C-стиль API и COM API для Windows под названием Universal Plug and Play (UPnP) Client Support . COM APIs экспонируются с помощью UPNP.DLL, а C-style APIs для SSDP экспонируются с помощью SSDPAPI.DLL.

COM-стиль APIs для UPNP , вероятно, ваш лучший выбор. Так как C# может обернуть COM объектов для вас и обрабатывать interop. Я не смог найти ни одного места, где этот API был перенесен в C# или .NET фреймворк изначально.


  Сведения об ответе

lourence

23:46, 26th August, 2020

Вы также можете рассмотреть Bonjour от Apple, который является их реализацией Zeroconf . Он доступен для Mac, PCs и Linux/BSD.


  Сведения об ответе

appple

23:53, 5th August, 2020

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


  Сведения об ответе

dumai

21:06, 1st October, 2020

Мое решение multicast UDP кажется ненадежным из-за недавнего обновления MS.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться