RoutingdienstRouting Service

Der Routingdienst ist ein generischer SOAP-Vermittler, der als Nachrichtenrouter fungiert.The Routing Service is a generic SOAP intermediary that acts as a message router. Die Kernfunktion des Routingdiensts ist die Fähigkeit, Nachrichten basierend auf Nachrichteninhalt weiterzuleiten. So können Nachrichten anhand eines Werts innerhalb der Nachricht selbst (im Header oder im Text) an einen Clientendpunkt weitergeleitet werden.The core functionality of the Routing Service is the ability to route messages based on message content, which allows a message to be forwarded to a client endpoint based on a value within the message itself, in either the header or the message body.

Die RoutingService wird als Dienst in Windows Communication Foundation (WCF) implementiert die System.ServiceModel.Routing Namespace.The RoutingService is implemented as a Windows Communication Foundation (WCF) service in the System.ServiceModel.Routing namespace. 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.The Routing Service exposes one or more service endpoints that receive messages and then routes each message to one or more client endpoints based on the message content. Der Dienst stellt die folgenden Funktionen bereit:The service provides the following features:

  • Inhaltsbasiertes RoutingContent-based routing

    • DienstaggregationService aggregation

    • DienstversionsverwaltungService versioning

    • PrioritätsroutingPriority routing

    • Dynamische KonfigurationDynamic configuration

  • ProtokollüberbrückungProtocol bridging

  • SOAP-VerarbeitungSOAP processing

  • Erweiterte FehlerbehandlungAdvanced error handling

  • SicherungsendpunkteBackup endpoints

Es ist möglich, einen Vermittlerdienst zu erstellen, der eine oder mehrere dieser Zielsetzungen erfüllt. Häufig ist eine Implementierung dieser Art jedoch an ein bestimmtes Szenario oder eine Projektmappe gebunden und kann nicht ohne Weiteres auf neue Anwendungen angewendet werden.While it is possible to create an intermediary service that accomplishes one or more of these goals, often such an implementation is tied to a specific scenario or solution and cannot be readily applied to new applications.

Der Routingdienst stellt einen generischen, dynamisch konfigurierbaren und austauschbaren SOAP-Vermittler, die kompatibel mit den WCF-Dienst und den Channelcache-Modellen und ermöglicht Ihnen, inhaltsbasiertes routing von SOAP-basierten Nachrichten auszuführen.The Routing Service provides a generic, dynamically configurable, pluggable SOAP intermediary that is compatible with the WCF Service and Channel models and allows you to perform content-based routing of SOAP-based messages.

Hinweis

Der Routingdienst unterstützt das Weiterleiten von WCF-REST-Diensten momentan nicht.The Routing Service does not currently support routing of WCF REST services. Um die REST-Aufrufe weiterleiten möchten, erwägen Sie System.Web.Routing oder Application Request Routing (http://go.microsoft.com/fwlink/?LinkId=164589).To route REST calls, consider using System.Web.Routing or Application Request Routing (http://go.microsoft.com/fwlink/?LinkId=164589).

Inhaltsbasiertes RoutingContent-Based Routing

Das inhaltsbasierte Routing ist die Fähigkeit, eine Nachricht basierend auf einem oder mehreren Werten weiterzuleiten, die in der Nachricht enthalten sind.Content-based routing is the ability to route a message based on one or more values contained within the message. Der Routingdienst überprüft jede Nachricht und leitet diese basierend auf den Nachrichteninhalten und der von Ihnen erstellten Routinglogik an den Zielendpunkt weiter.The Routing Service inspects each message and routes it to the destination endpoint based on the message contents and the routing logic you create. Das inhaltsbasierte Routing stellt die Basis für die Dienstaggregation, die Dienstversionsverwaltung und das Prioritätsrouting dar.Content-based routing provides the basis for service aggregation, service versioning, and priority routing.

Zum Implementieren von inhaltsbasiertem Routing benötigt der Routingdienst MessageFilter-Implementierungen, mit denen innerhalb der weiterzuleitenden Nachrichten Übereinstimmungen bestimmter Werte ermittelt werden.To implement content-based routing, the Routing Service relies on MessageFilter implementations that are used to match specific values within the messages to be routed. Wenn eine MessageFilter Übereinstimmungen, die eine Nachricht, die Nachricht wird an den Zielendpunkt zugeordneten weitergeleitet der MessageFilter.If a MessageFilter matches a message, the message is routed to the destination endpoint associated with the MessageFilter. Nachrichtenfilter werden in Filtertabellen (FilterTableCollection) gruppiert, um eine komplexe Routinglogik zu erstellen.Message filters are grouped together into filter tables (FilterTableCollection) to construct complex routing logic. 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.For example, a filter table might contain five mutually exclusive message filters that cause messages to be routed to only one of the five destination endpoints.

Mit dem Routingdienst können Sie die Logik konfigurieren, die verwendet wird, um das inhaltsbasierte Routing auszuführen, und Sie können die Routinglogik zur Laufzeit dynamisch aktualisieren.The Routing Service allows you to configure the logic that is used to perform content-based routing, as well as dynamically update the routing logic at run time.

Aufgrund der Gruppierung von Nachrichtenfiltern in Filtertabellen kann eine Routinglogik erstellt werden, mit deren Hilfe Sie mehrere Routingszenarien verwenden können, z. B.:Through the grouping of message filters into filter tables, routing logic can be constructed that allows you to handle multiple routing scenarios such as:

  • DienstaggregationService aggregation

  • DienstversionsverwaltungService versioning

  • PrioritätsroutingPriority routing

  • Dynamische KonfigurationDynamic configuration

Weitere Informationen zu Message Filter und Filtertabellen, finden Sie unter Routing Einführung und Nachrichtenfilter.For more information about message filters and filter tables, see Routing Introduction and Message Filters.

DienstaggregationService Aggregation

Mit dem inhaltsbasierten Routing können Sie einen Endpunkt verfügbar machen, der Nachrichten von externen Clientanwendungen empfängt und jede Nachricht dann anhand eines Werts in der Nachricht an den entsprechenden internen Endpunkt weiterleitet.By using content-based routing, you can expose one endpoint that receives messages from external client applications and then routes each message to the appropriate internal endpoint based on a value within the message. Dies ist nützlich, um für eine Reihe unterschiedlicher Back-End-Anwendungen einen bestimmten Endpunkt bereitzustellen. Außerdem können Sie so einen Anwendungsendpunkt für Kunden bereitstellen und die Anwendung in verschiedene Dienste unterteilen.This is useful to offer one specific endpoint for a variety of back-end applications, and also to present one application endpoint to customers while factoring your application into a variety of services.

DienstversionsverwaltungService Versioning

Wenn Sie zu einer neuen Version der Projektmappe migrieren, müssen Sie die alte Version ggf. parallel weiterlaufen lassen, um bestehende Kunden weiter bedienen zu können.When migrating to a new version of your solution, you may have to maintain the old version in parallel to serve existing customers. Häufig bedeutet dies für Clients, die über eine Verbindung zur neuen Version verfügen, dass diese für die Kommunikation mit der Projektmappe eine andere Adresse verwenden müssen.Often this requires that clients connecting to the newer version must use a different address when communicating with the solution. Mit dem Routingdienst können Sie einen Dienstendpunkt verfügbar machen, der für beide Versionen der Projektmappe verwendet wird, indem Nachrichten basierend auf jeweils in der Nachricht enthaltenen Informationen an die entsprechende Projektmappe weitergeleitet werden.The Routing Service allows you to expose one service endpoint that serves both versions of your solution by routing messages to the appropriate solution based on version-specific information contained in the message. Ein Beispiel für eine solche Implementierung finden Sie unter How To: Dienstversionsverwaltung.For an example of such an implementation see How To: Service Versioning.

PrioritätsroutingPriority Routing

Wenn Sie einen Dienst für mehrere Clients bereitstellen, verfügen Sie ggf. über eine Vereinbarung zum Servicelevel (SLA) mit einigen Partnern, bei der alle Daten dieser Partner separat von den Daten anderer Clients verarbeitet werden müssen.When providing a service for multiple clients, you may have a service level agreement (SLA) with some partners that requires all data from these partners to be processed separately from that of other clients. Mit einem Filter, der in der Nachricht nach kundenspezifischen Informationen sucht, können Sie Nachrichten von bestimmten Partnern auf einfache Weise an einen Endpunkt weiterleiten, der erstellt wurde, um die SLA-Anforderungen zu erfüllen.By using a filter that looks for customer-specific information contained in the message, you can easily route messages from specific partners to an endpoint that has been created to meet their SLA requirements.

Dynamische KonfigurationDynamic Configuration

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.To support mission-critical systems, where messages must be processed without any service interruptions, it is vital that you be able to modify the configuration of components within the system at run time. Um diese Anforderung zu unterstützen, stellt der Routingdienst eine IExtension<T>-Implementierung bereit, und zwar RoutingExtension, die eine dynamische Aktualisierung der Routingdienstkonfiguration zur Laufzeit ermöglicht.To support this need, the Routing Service provides an IExtension<T> implementation, the RoutingExtension, which allows dynamic updating of the Routing Service configuration at run time.

Weitere Informationen zur dynamischen Konfiguration des Routingdiensts finden Sie unter Routing Einführung.For more information about dynamic configuration of the Routing Service, see Routing Introduction.

ProtokollüberbrückungProtocol Bridging

Eine der Herausforderungen besteht bei Vermittlerszenarios darin, dass die internen Endpunkte ggf. über andere Anforderungen an den Transport oder die SOAP-Version als der Endpunkt verfügen, an dem Nachrichten empfangen werden.One of the challenges in intermediary scenarios is that the internal endpoints may have different transport or SOAP version requirements than the endpoint that messages are received on. Um dieses Szenario zu unterstützen, kann der Routingdienst Protokolle überbrücken, einschließlich der Verarbeitung der SOAP-Nachricht an die MessageVersion, die für die Zielendpunkte erforderlich ist.To support this scenario, the Routing Service can bridge protocols, including processing the SOAP message to the MessageVersion required by the destination endpoint(s). Auf diese Weise kann ein Protokoll für die interne Kommunikation verwendet werden, während ein anderes für die externe Kommunikation verwendet werden kann.In this way, one protocol can be used for internal communication, while another can be used for external communication.

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.To support the routing of messages between endpoints with different transports, the Routing Service uses system-provided bindings that enable the service to bridge dissimilar protocols. Dies tritt automatisch ein, wenn der vom Routingdienst verfügbar gemachte Dienstendpunkt ein anderes Protokoll verwendet als die Clientendpunkte, an die Nachrichten weitergeleitet werden.This occurs automatically when the service endpoint exposed by the Routing Service uses a different protocol than the client endpoints that messages are routed to.

SOAP-VerarbeitungSOAP Processing

Eine häufige Routinganforderung ist die Fähigkeit, Nachrichten zwischen Endpunkten mit sich unterscheidenden SOAP-Anforderungen weiterzuleiten.A common routing requirement is the ability to route messages between endpoints with differing SOAP requirements. Um diese Anforderung zu unterstützen, stellt der Routingdienst eine SoapProcessingBehavior erstellt automatisch eine neue MessageVersion , die die Anforderungen des Zielendpunkts erfüllt, bevor die Nachricht dorthin weitergeleitet wird.To support this requirement, the Routing Service provides a SoapProcessingBehavior that automatically creates a new MessageVersion that meets the requirements of the destination endpoint before the message is routed to it. Dieses Verhalten erstellt auch einen neuen MessageVersion für jede Antwortnachricht vor der Rückgabe an die anfordernde Clientanwendung, um sicherzustellen, dass die MessageVersion der Antwort entspricht der die ursprüngliche Anforderung.This behavior also creates a new MessageVersion for any response message before returning it to the requesting client application, to ensure that the MessageVersion of the response matches that of the original request.

Weitere Informationen zu SOAP-Verarbeitung finden Sie unter Routing Einführung.For more information about SOAP processing, see Routing Introduction.

FehlerbehandlungError Handling

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.In a system composed of distributed services that rely on network communications, it is important to ensure that communications within your system are resistant to transient network failures. Der Routingdienst implementiert eine Fehlerbehandlung, bei der Sie viele Kommunikationsfehlerszenarien behandeln können, die andernfalls zu einem Dienstausfall führen können.The Routing Service implements error handling that allows you to handle many communication failure scenarios that might otherwise result in a service outage.

Wenn der Routingdienst beim versuchten Senden einer Nachricht auf eine CommunicationException trifft, wird die Fehlerbehandlung durchgeführt.If the Routing Service encounters a CommunicationException while attempting to send a message, error handling will take place. 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.These exceptions typically indicate that a problem was encountered while attempting to communicate with the defined client endpoint, such as an EndpointNotFoundException, ServerTooBusyException, or CommunicationObjectFaultedException. Der Fehlerbehandlungscode ebenfalls abfangen und versuchen, erneut zu senden, wenn eine TimeoutException auftritt, also in eine andere häufige Ausnahme, die nicht von abgeleitet ist CommunicationException.The error-handling code will also catch and attempt to retry sending when a TimeoutException occurs, which is another common exception that is not derived from CommunicationException.

Weitere Informationen zur Fehlerbehandlung finden Sie unter Routing Einführung.For more information about error handling, see Routing Introduction.

SicherungsendpunkteBackup Endpoints

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.In addition to the destination client endpoints associated with each filter definition in the filter table, you can also create a list of backup endpoints that the message will be routed to in the event of a transmission failure. 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.If an error occurs and a backup list is defined for the filter entry, the Routing Service will attempt to send the message to the first endpoint defined in the list. 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.If this transmission attempt fails, the service will try the next endpoint, and continue this process until the transmission attempt succeeds, returns a non-transmission related error, or all endpoints in the backup list have returned a transmission error.

Weitere Informationen zu den sicherungsendpunkten, finden Sie unter Routing Einführung und Nachrichtenfilter.For more information about backup endpoints, see Routing Introduction and Message Filters.

StreamingStreaming

Der Routingdienst kann Nachrichten erfolgreich streamen, wenn Sie die Bindung für die Unterstützung von Streaming festlegen.The routing service can successfully stream messages if you set the binding to support streaming. Es gibt jedoch einige Bedingungen, die möglicherweise das Puffern von Nachrichten erfordern:However, there are some conditions under which messages may need to buffered:

  • Multicast (puffern, um zusätzliche Nachrichtenkopien zu erstellen)Multicast (buffer to create additional message copies)

  • Failover (puffern, falls die Nachricht an eine Sicherung gesendet werden muss)Failover (buffer in case the message needs to be sent to a backup)

  • System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly ist false (puffern, um die MessageFilterTable mit einem MessageBuffer bereitzustellen, damit Filter den Text überprüfen können)System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly is false (buffer to present the MessageFilterTable with a MessageBuffer so that filters can inspect the body)

  • Dynamische KonfigurationDynamic configuration

Siehe auchSee Also

Einführung in RoutingRouting Introduction
RoutingverträgeRouting Contracts
NachrichtenfilterMessage Filters