2008-08-22 9 views
4

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

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

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

ответ

4

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

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

0

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

+0

У меня уже есть решение на стороне клиента. Это требование не касаясь недавно упало у меня на коленях. В принципе, нам нужно развернуть огромное количество конечных пользователей манекенов с минимальным административным вмешательством. Thx в любом случае. – Ishmaeel 2008-09-07 19:49:00

1

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

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

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

1

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

0

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