Routingdienst

Der Routingdienst ist ein generischer SOAP-Vermittler, der als Nachrichtenrouter fungiert. Die Kernfunktion des Routingdiensts ist die Fähigkeit, Nachrichten basierend auf dem Meldungsinhalt weiterzuleiten. So können Nachrichten anhand eines Werts innerhalb der Nachricht selbst (im Header oder im Text) an einen Clientendpunkt weitergeleitet werden.

RoutingService wird als WCF-Dienst im System.ServiceModel.Routing-Namespace implementiert. Der Routingdienst macht einen oder mehrere Dienstendpunkte verfügbar, die Nachrichten empfangen und die einzelnen Nachrichten dann anhand ihres Inhalts an einen oder mehrere Clientendpunkte weiterleiten. Der Dienst stellt die folgenden Funktionen bereit:

  • Inhaltsbasiertes Routing

    • Dynamische Konfiguration
  • Protokollüberbrückung

  • SOAP-Verarbeitung

  • Erweiterte Fehlerbehandlung

Inhaltsbasiertes Routing

Zum Implementieren von inhaltsbasiertem Routing benötigt der Routingdienst MessageFilter-Implementierungen, mit denen innerhalb der weiterzuleitenden Nachrichten Übereinstimmungen bestimmter Werte ermittelt werden. Wenn ein MessageFilter für eine Nachricht eine Übereinstimmung findet, wird die Nachricht an den Zielendpunkt weitergeleitet, der dem MessageFilter zugeordnet ist. Nachrichtenfilter werden in Filtertabellen (FilterTableCollection) gruppiert, um eine komplexe Routinglogik zu erstellen. Eine Filtertabelle kann z. B. fünf sich gegenseitig ausschließende Nachrichtenfilter enthalten, die bewirken, dass Nachrichten nur an einen von fünf Zielendpunkten weitergeleitet werden.

Aufgrund der Gruppierung von Nachrichtenfiltern in Filtertabellen kann eine Routinglogik erstellt werden, mit deren Hilfe Sie mehrere Routingszenarien verwenden können, z. B.:

  • Dienstaggregation

  • Dienstversionsverwaltung

  • Prioritätsrouting

Weitere Informationen zu Nachrichtenfiltern und Filtertabellen finden Sie unter Einführung in das Routing und unter Nachrichtenfilter.

Dynamische Konfiguration

Wenn es beim Unterstützen von unternehmenswichtigen Systemen um die Nachrichtenverarbeitung ohne Dienstunterbrechungen geht, ist es von entscheidender Bedeutung, dass Sie die Konfiguration von Komponenten innerhalb des Systems während der Laufzeit ändern können. Um diese Anforderung zu unterstützen, stellt der Routingdienst eine IExtension-Implementierung bereit, und zwar RoutingExtension, die eine dynamische Aktualisierung der Routingdienstkonfiguration zur Laufzeit ermöglicht.

Weitere Informationen zur dynamischen Konfiguration des Routingdiensts finden Sie unter Einführung in das Routing.

Protokollüberbrückung

Um die Weiterleitung von Nachrichten zwischen Endpunkten mit verschiedenen Transporten zu unterstützen, verwendet der Routingdienst vom System bereitgestellte Bindungen, die dem Dienst das Überbrücken unterschiedlicher Protokolle ermöglichen. Dies tritt automatisch ein, wenn der vom Routingdienst verfügbar gemachte Dienstendpunkt ein anderes Protokoll verwendet als die Clientendpunkte, an die Nachrichten weitergeleitet werden.

SOAP-Verarbeitung

Eine häufige Routinganforderung ist die Fähigkeit, Nachrichten zwischen Endpunkten mit sich unterscheidenden SOAP-Anforderungen weiterzuleiten. Um diese Anforderung zu unterstützen, stellt der Routingdienst SoapProcessingBehavior bereit. Dieses Verhalten erstellt automatisch eine neue MessageVersion, die die Anforderungen des Zielendpunkts erfüllt, bevor die Nachricht dorthin weitergeleitet wird. Dieses Verhalten erstellt auch für jede Antwortnachricht eine neue MessageVersion, bevor diese an die anfordernde Clientanwendung zurückgegeben wird. So soll sichergestellt werden, dass die MessageVersion der Antwort und der ursprünglichen Anforderung übereinstimmt.

Weitere Informationen zur SOAP-Verarbeitung finden Sie unter Einführung in das Routing.

Fehlerbehandlung

In einem System, das aus verteilten Diensten besteht, die eine Netzwerkkommunikation benötigen, muss sichergestellt sein, dass die Kommunikation innerhalb des Systems gegen vorübergehende Netzwerkfehler immun ist. Der Routingdienst implementiert eine Fehlerbehandlung, bei der Sie viele Kommunikationsfehlerszenarien behandeln können, die andernfalls zu einem Dienstausfall führen können.

Wenn der Routingdienst beim versuchten Senden einer Nachricht auf eine CommunicationException trifft, wird die Fehlerbehandlung durchgeführt. Diese Ausnahmen weisen in der Regel darauf hin, dass beim Versuch der Kommunikation mit dem definierten Clientendpunkt ein Problem aufgetreten ist, z. B. EndpointNotFoundException, ServerTooBusyException oder CommunicationObjectFaultedException. Der Fehlerbehandlungscode führt auch dann einen Catch aus und versucht, das Senden erneut durchzuführen, wenn eine TimeoutException auftritt. Dies ist eine andere häufige Ausnahme, die nicht von CommunicationException abgeleitet ist.

Weitere Informationen zur Fehlerbehandlung finden Sie unter Einführung in das Routing.

Sicherungsendpunkte

Zusätzlich zu den Ziel-Clientendpunkten, die in der Filtertabelle den einzelnen Filterdefinitionen zugeordnet sind, können Sie auch eine Liste von Sicherungsendpunkten erstellen, an die die Nachricht im Fall eines Übertragungsfehlers weitergeleitet wird. Wenn ein Fehler auftritt und eine Sicherungsliste für den Filtereintrag definiert wird, versucht der Routingdienst, die Nachricht an den ersten in der Liste definierten Endpunkt zu senden. Falls bei diesem Übertragungsversuch ein Fehler auftritt, versucht es der Dienst mit dem nächsten Endpunkt und setzt diesen Vorgang so lange fort, bis die Übertragung erfolgreich ist, einen nicht die Übertragung betreffenden Fehler zurückgibt oder alle Endpunkte in der Sicherungsliste einen Übertragungsfehler zurückgegeben haben.

Weitere Informationen zu Sicherungsendpunkten finden Sie unter Einführung in das Routing und Nachrichtenfilter.

Siehe auch

Konzepte

Einführung in das Routing
Routingverträge
Nachrichtenfilter