Question

J'ai une application client/serveur qui communique avec .Net remoting.J'ai besoin que mes clients puissent trouver le(s) serveur(s) sur le réseau sans nécessiter de configuration côté client.

Pour autant que je sache, il n'existe aucun support pour la découverte à distance.Je suis prêt à implémenter une solution UDP où les clients pourront trouver les serveurs via des messages diffusés.

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

Était-ce utile?

La solution

J'ai examiné à la fois SSDP et UPnP pour ce type de fonctionnalité, mais je recommanderais d'opter pour un UDP personnalisé. multidiffusion solution.Fondamentalement, la multidiffusion est très similaire à une diffusion, mais seules les machines qui ont rejoint le groupe de multidiffusion (c'est-à-diredemandé la diffusion) sont contactés.

À mon humble avis, SSDP et UPnP et gonflé et trop compliqué pour la découverte de ressources...mais bon, c'est une norme.;)

Autres conseils

On dirait que ce dont vous avez besoin, c'est du Protocole de découverte de services simple ou SSDP.Ceci est implémenté dans Windows dans le cadre de la prise en charge par Microsoft de Plug and Play universel.Puisqu’il s’agit d’un protocole standard de l’industrie, cela semble être un bon pari.Par exemple, si vous souhaitez gérer des pare-feu ou d'autres problèmes, d'autres auront compris cela au lieu de devoir proposer votre propre solution.

Puisque vous parlez de .NET, je suppose que vous êtes sous Windows.Il existe un document un peu ancien (2001) décrivant une API de style C et une API COM pour Windows intitulée Prise en charge client universelle Plug and Play (UPnP).Les API COM sont exposées par UPNP.DLL et les API de style C pour SSDP sont exposées par SSDPAPI.DLL.

Le API de style COM pour UPNP sont probablement votre meilleur pari.Puisque C# peut envelopper les objets COM pour vous et gérer l’interopérabilité.Je n'ai trouvé aucun endroit où cette API a été portée nativement vers C# ou .NET Framework.

Vous pourriez également considérer celui d'Apple Bonjour, qui est leur Zéroconf mise en œuvre.Il est disponible pour Mac, PC et Linux/BSD.

La meilleure solution que j'ai trouvée dans mon travail à distance était de conserver la liste des serveurs dans un fichier de configuration sur les systèmes clients et de la rendre mise à jour.Pas le plus simple à entretenir mais rapide et sans diffusion.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top