2008-08-22 21 views
4

Ich habe eine Client/Server-Anwendung, die mit .Net Remoting kommuniziert. Ich brauche meine Clients, um die Server im Netzwerk zu finden, ohne dass eine Konfiguration auf der Clientseite erforderlich ist.Automatische Remoting-Servererkennung. Broadcast oder nicht?

Soweit ich weiß, gibt es keine Unterstützung für Discovery in Remoting. Ich bin bereit, eine UDP-Lösung zu implementieren, bei der die Clients die Server über Broadcast-Nachrichten finden können.

Ich möchte die kollektive SO Weisheit hören, bevor ich fortfahre. Ist das der beste Weg? Irgendwelche anderen Vorschläge?

Antwort

4

Ich habe SSDP und UPnP für diese Art von Funktionalität untersucht, aber ich würde empfehlen, mit einer benutzerdefinierten UDP multicast Lösung zu gehen. Grundsätzlich ist Multicast sehr ähnlich zu einem Broadcast, aber nur Computer, die der Multicast-Gruppe beigetreten sind (d. H. Die Sendung angefordert), werden kontaktiert.

IMHO, SSDP und UPnP und aufgebläht und übermäßig kompliziert für die Ressourcen-Entdeckung ... aber hey, es ist ein Standard. ;)

0

Die beste Lösung, die ich in meiner Remoting-Arbeit gefunden habe, war, die Serverliste in einer Konfigurationsdatei auf den Client-Systemen zu halten und aktualisierbar zu machen. Nicht einfach zu pflegen, aber schnell und ohne Rundfunk.

+0

Ich habe bereits eine clientseitige Konfigurationslösung installiert. Diese No-Touch-Anforderung ist in meiner Runde neu gefallen. Im Grunde müssen wir die Endbenutzer mit einer minimalen Anzahl von administrativen Eingriffen zu einer großen Anzahl von Dummies bereitstellen. Thx sowieso. – Ishmaeel

1

Scheint wie, was Sie brauchen, ist die Simple Service Discovery Protocol oder SSDP. Dies ist in Windows als Teil der Microsoft-Unterstützung für Universal Plug and Play implementiert. Da dies ein Industriestandardprotokoll ist, scheint es eine gute Wette zu sein. Zum Beispiel, wenn Sie mit Firewalls oder anderen Problemen umgehen wollen, wird dies von anderen herausgefunden, anstatt dass Sie Ihre eigene Lösung rollen müssen.

Da Sie sprechen .NET nehme ich an, dass Sie auf Windows sind. Es gibt ein etwas altes Dokument (2001), das eine C-style API und eine COM API für Windows mit dem Titel Universal Plug and Play (UPnP) Client Support beschreibt. Die COM-APIs werden von UPNP.DLL verfügbar gemacht und die C-style-APIs für SSDP werden von SSDPAPI.DLL verfügbar gemacht.

Die COM-style APIs for UPNP sind wahrscheinlich Ihre beste Wette. Seit C# kann COM-Objekte für Sie einpacken und Interop behandeln. Ich konnte keinen Ort finden, an dem diese API nativ nach C# oder .NET Framework portiert wurde.

1

Sie könnten auch Apples Bonjour, die ihre Zeroconf Implementierung ist. Es ist für Mac, PCs und Linux/BSD verfügbar.

0

Meine Multicast-UDP-Lösung scheint aufgrund des letzten MS-Updates unzuverlässig zu sein.