2008-08-22 9 views
4

J'ai une application client/serveur qui communique avec .Net Remoting. J'ai besoin de mes clients pour pouvoir trouver le (s) serveur (s) sur le réseau sans nécessiter de configuration côté client. Pour autant que je sache, il n'y a pas de support pour la découverte dans la communication à distance. Je suis prêt à mettre en œuvre une solution UDP où les clients pourront trouver les serveurs via des messages diffusés.Remoting automatique découverte du serveur. Diffusion ou non?

Je veux entendre le collectif SO sagesse avant d'aller de l'avant. Est-ce la meilleure façon? D'autres suggestions?

Répondre

4

J'ai regardé à la fois SSDP et UPnP pour ce type de fonctionnalité, mais je vous recommande d'utiliser une solution personnalisée UDP multicast. Fondamentalement, la multidiffusion est très similaire à une diffusion, mais seules les machines qui ont rejoint le groupe de multidiffusion (c'est-à-dire qui ont demandé la diffusion) sont contactées.

IMHO, SSDP et UPnP et gonflé et trop compliqué pour la découverte des ressources ... mais bon, c'est une norme. ;)

0

La meilleure solution que j'ai trouvée dans mon travail d'accès à distance était de garder la liste des serveurs dans un fichier de configuration sur les systèmes clients et de la rendre modifiable. Pas le plus facile à maintenir mais était rapide et pas de diffusion.

+0

J'ai déjà une solution de configuration côté client en place. Cette exigence sans contact a récemment chuté sur mes genoux. Fondamentalement, nous avons besoin de déployer à une quantité massive de mannequins utilisateurs finaux avec une intervention administrative minimale. Thx de toute façon. – Ishmaeel

1

On dirait que ce dont vous avez besoin est le Simple Service Discovery Protocol ou SSDP. Ceci est implémenté dans Windows dans le cadre du support de Microsoft pour Universal Plug and Play. Comme il s'agit d'un protocole standard de l'industrie, cela semble être un bon pari. Par exemple, si vous voulez faire face à des pare-feux ou à d'autres problèmes, cela aura été compris par d'autres personnes au lieu de devoir rouler votre propre solution.

Puisque vous parlez .NET, je suppose que vous êtes sur Windows. Il existe un document assez ancien (2001) décrivant une API de style C et une API COM pour Windows intitulée Universal Plug and Play (UPnP) Client Support. Les API COM sont exposées par UPNP.DLL et les API de style C pour SSDP sont exposées par SSDPAPI.DLL. Les COM-style APIs for UPNP sont probablement votre meilleur pari. Depuis C# peut emballer des objets COM pour vous et gérer l'interop. Je n'ai trouvé aucun endroit où cette API a été portée en C# ou .NET Framework en mode natif.

1

Vous pouvez également envisager Apple Bonjour, qui est leur implémentation Zeroconf. Il est disponible pour Mac, PC et Linux/BSD.

0

Ma solution UDP multidiffusion ne semble pas fiable en raison de la récente mise à jour MS.

Questions connexes