Автоматическое обнаружение удаленного сервера.Трансляция или нет?

StackOverflow https://stackoverflow.com/questions/22321

Вопрос

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

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

Прежде чем продолжить, я хочу услышать коллективную мудрость ТАК.Это лучший способ?Есть еще предложения?

Это было полезно?

Решение

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

ИМХО, SSDP и UPnP раздуты и слишком сложны для обнаружения ресурсов...но эй, это стандарт.;)

Другие советы

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

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

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

Вы также можете рассмотреть Apple Бонжур, что является их Зероконф выполнение.Он доступен для Mac, ПК и Linux/BSD.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top