7 Stimmen

Multicast-Unterstützung in .Net

Um eine Netzwerkanwendung zu implementieren, die Multicasts verwendet, um kleine periodische Nachrichten an andere Prozesse im Netzwerk zu senden, welche Möglichkeiten habe ich in Bezug auf die Verwendung von APIs im .Net Framework? Abgesehen von meiner offensichtlichen aktuellen Wahl, der System.net.sockets API, bietet WCF einen einfacheren Ansatz? Oder ist WCF ein reiner Punkt-zu-Punkt SOA-basierter IPC-Mechanismus?

Hinweis : Ich bin mit den Implementierungsdetails der Multicast-Programmierung recht gut vertraut. Was mich interessiert, ist, welche anderen Möglichkeiten das .Net Framework bietet.

2voto

Quassnoi Punkte 396418

Sie erstellen einfach eine UDPClient und senden Daten an eine Multicast-Adresse ( 224/4 d.h. jede Adresse von 224.0.0.0 a 239.255.255.255 ).

Ihre Kunden hören einfach wie gewohnt auf diese Adresse.

Siehe meine Antwort aquí für weitere Einzelheiten.

P.S. Obwohl WCF ist ein ziemlicher Overkill für eine so einfache Aufgabe, es ist durchaus möglich mit WCF . Es gibt verschiedene Message Exchange Patterns dort, d. h. die Art und Weise, wie die Kommunikation fließt.

Was Sie brauchen, ist IOutputChannel für den Absender und IInputChannel für die Zuhörer handelt es sich um datagrammorientierte Muster.

2voto

ng5000 Punkte 11820

Ich wollte vorschlagen, dass Callback-Kanäle (d.h. ein Pub/Sub-Typ-System) in WCF implementiert verwenden, aber das würde erfordern, dass Ihre Clients mit dem "Server" zu registrieren.

Ich wollte dann Messaging-Lösungen der Unternehmensklasse wie Tibco EMS (eine JMS-Implementierung) erwähnen.

Dann habe ich Google bemüht und diesen Link gefunden: WCF-Multicasting . Es gibt dort viele Ideen, auf die ich bei meinem ersten Blick auf die WCF noch nicht gestoßen bin.

0voto

Spence Punkte 27536

WCF ist WIRKLICH schwer für das, was Sie tun wollen.

Ihre beste Wette ist wirklich die Verwendung der Datagramme in der Sockets-Api. Sie sind nicht zu beängstigend, wenn Sie Ihren Kopf um die API erhalten, aber es ist sicherlich nicht die freundlichste zur Verfügung.

Multicasting wird über die Adresse erreicht, an die gesendet wird, vorausgesetzt, Ihr ISP/Netzwerkadministrator erlaubt Multicast-Daten. WCF erlaubt von Natur aus nicht mehrere Ziele AFAIK, wenn Sie einen Proxy erstellen, müssen Sie es auf eine IP (die eine Multicast-Adresse sein könnte) zeigen

0voto

Ajaxx Punkte 2480

FWIW, Ihre ursprüngliche Frage war, ob WCF Ihre Ziele erreichen kann. Wie Quassnoi bereits angedeutet hat, können Sie dies mit WCF sicherlich erreichen. Während sich die meiste Literatur über WCF darauf konzentriert, wie Sie das Vertragsmodell verwenden, ist es möglich und plausibel, nur das Kanalmodell und die Bindungsstruktur zu verwenden.

Wenn Sie IOutputChannel und IInputChannel implementieren, können Sie Ihren eigenen datagrammbasierten Kanal erstellen. Wird dies als Teil des Frameworks zur Verfügung gestellt, nein (und ich denke, dies ist auch der Kern Ihrer Frage). Microsoft hat jedoch ein Beispiel für einen UDP-Transport zur Verfügung gestellt (von dem sie behaupten, dass er Multicast unterstützt). Sie finden dieses Beispiel unter der folgenden URL:

http://msdn.microsoft.com/en-us/library/ms751494.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X