Tipps und Tricks rund um .NET und Visual Studio

UDP-Binding und Multicasts in WCF 4.5
Kommentare

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer teilen in der Kolumne „.NETversum“ ihr Expertenwissen rund um .NET-Tools und WPF mit.

Für Fälle, in denen TCP zu viel Overhead mit sich bringt, bietet WCF 4.5 nun ein udpBinding an. Wie der Name vermuten lässt, stützt es sich auf das verbindungslose Protokoll UDP und erlaubt somit eine, in Relation zu TCP gesehen, schlanke Form der Kommunikation – ohne Three-Way-Handshake und Bestätigungsnachrichten. Dies bedeutet aber auch, dass es der Sender nicht bemerkt, wenn Nachrichten verlorengehen. Insofern macht dieses Binding nur in Fällen Sinn, wo das egal ist oder gar gewünscht ist, weil die Daten zum Beispiel nach einem erneuten Senden bereits veraltet wären.

Außerdem erlaubt UDP das Versenden von Multicasts. Damit sind Nachrichten gemeint, die von beliebig vielen Interessenten im lokalen Netzwerk empfangen werden können. Dazu verwendet man sowohl für den Service- also auch für den Clientendpunkt eine IP-Adresse aus dem Bereich 224.x.x.x bis 239.x.x.x. Jene, die die Zeit der IPv4-Klassen miterlebt haben, werden diesen Adressbereich auch als Klasse D bezeichnen oder anders ausgedrückt: Alle Adressen dieses Bereichs haben ein binäres Muster, das mit 1110 beginnt. Bei der Vergabe von Multicast-Adressen muss man sich jedoch vor Augen führen, dass die Adressen 224.x.x.x und 239.x.x.x für spezielle Zwecke reserviert sind, sodass sich dieser Wertebereich für die freie Verwendung auf 225.x.x.x bis 238.x.x.x beschränkt. Darüber hinaus soll an dieser Stelle nochmals ausdrücklich erwähnt werden, dass UDP-Nachrichten nicht über Netzwerkgrenzen geroutet werden und somit nur innerhalb eines Netzwerks herangezogen werden können.

Das Beispiel in Listing 1 zeigt die Konfiguration eines Service für die Verwendung von UDP und Multicasts. Es verwendet die Multicast-Adresse 225.1.1.1 und das Port 9999. Somit können beliebig viele Instanzen des Service gestartet werden, wobei jeder Server alle vom Client gesendeten Nachrichten erhält, sofern diese nicht verlorengehen. Antworten mehrere Services auf eine Anfrage des Clients, zieht dieser lediglich die zuerst erhaltene heran; alle anderen werden ignoriert. Eine Möglichkeit, dies zu umgehen, stellt der Einsatz von Callbacks (Duplex) dar. Allerdings unterstützt das udpBinding keine Duplexszenarien, weswegen diese manuell implementiert werden müssten.

Listing 1
                                                                                                                                     

Die dazugehörige Clientkonfiguration ist in Listing 2 ersichtlich.

Listing 2
              
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -