RoutingszenarienRouting Scenarios

Der Routingdienst lässt sich zwar stark anpassen, aber es kann aufwändig sein, beim Erstellen einer völlig neuen Konfiguration eine effiziente Routinglogik zu entwerfen.While the Routing Service is highly customizable, it can be a challenge to design efficient routing logic when creating a new configuration from scratch. Es gibt jedoch einige allgemeine Szenarios, auf denen die meisten Routingdienstkonfigurationen basieren.However, there are several common scenarios that most Routing Service configurations follow. Auch wenn diese Szenarios ggf. nicht genau mit Ihrer jeweiligen Konfiguration übereinstimmen, trägt es zum Verständnis des Routingdiensts bei, wenn Sie wissen, wie dieser in bestimmten Szenarios konfiguriert werden kann.While these scenarios may not apply directly to your specific configuration, understanding how the Routing Service can be configured to handle these scenarios will aid you in understanding the Routing Service.

Häufige SzenarienCommon Scenarios

Die grundlegendste Verwendung des Routingdiensts ist die Aggregation mehrerer Zielendpunkte zum Reduzieren der Anzahl von Endpunkten, die für die Clientanwendungen verfügbar gemacht werden, und die anschließende Verwendung von Nachrichtenfiltern zum Weiterleiten der einzelnen Nachrichten an das richtige Ziel.The most basic use of the Routing Service is to aggregate multiple destination endpoints to reduce the number of endpoints exposed to the client applications, and then use message filters to route each message to the correct destination. Nachrichten können basierend auf logischen oder physischen Verarbeitungsanforderungen (z. B. ein Nachrichtentyp, der von einem bestimmten Dienst verarbeitet werden muss) oder basierend auf beliebigen Geschäftsanforderungen (z. B. Bereitstellung der Verarbeitung von Nachrichten über eine bestimmte Quelle) verarbeitet werden.Messages may be routed based on logical or physical processing requirements, such as a message type that must be processed by a specific service, or based on arbitrary business needs such as providing priority processing of messages from a specific source. In der nachstehenden Tabelle sind einige allgemeine Szenarios und die Umstände aufgeführt, unter denen diese auftreten:The following table lists some of the common scenarios and when they are encountered:

SzenarioScenario Wenn folgende Bedingungen vorliegenUse when
DienstversionsverwaltungService versioning Sie müssen mehrere Versionen eines Diensts unterstützen oder in Zukunft ggf. einen aktualisierten Dienst bereitstellen.You need to support multiple versions of a service or may deploy an updated service in the future
DienstdatenpartitionierungService data partitioning Sie müssen einen Dienst über mehrere Hosts hinweg partitionieren.You must partition a service across multiple hosts
Dynamisches UpdateDynamic update Sie müssen die Routinglogik zur Laufzeit aufgrund von sich ändernden Dienstbereitstellungen dynamisch neu konfigurieren.You must dynamically reconfigure routing logic at runtime to handle changing service deployments
MulticastMulticast Sie müssen eine Nachricht an mehrere Endpunkte senden.You must send one message to multiple endpoints
ProtokollüberbrückungProtocol bridging Sie empfangen Nachrichten über ein Transportprotokoll, und der Zielendpunkt verwendet ein anderes Protokoll.You receive messages over one transport protocol, and the destination endpoint uses a different protocol
FehlerbehandlungError Handling Sie müssen für die Widerstandsfähigkeit gegen Netzwerkausfälle und Kommunikationsfehler sorgen.You need to provide resilience to network outages and communication failures

Hinweis

Viele der beschriebenen Szenarios gelten nur für bestimmte Geschäftsanforderungen oder Verarbeitungsanforderungen, aber die Planung der Unterstützung dynamischer Updates und die Verwendung der Fehlerbehandlung zählen zu den bewährten Vorgehensweise. Sie können damit die Routinglogik zur Laufzeit und die Wiederherstellung bei vorübergehenden Netzwerkfehlern und Kommunikationsfehlern sicherstellen.While many of the scenarios presented are specific to certain business needs or processing requirements, planning to support dynamic updates and utilizing error handling can often be considered as best practices as they allow you to modify routing logic at runtime and recover from transient network and communication failures.

DienstversionsverwaltungService Versioning

Wenn Sie eine neue Version eines Diensts einführen, müssen Sie die ältere Version häufig noch so lange weiter pflegen, bis alle Clients auf den neuen Dienst umgestellt wurden.When introducing a new version of a service, you must often maintain the previous version until all clients have transitioned to the new service. Dies ist besonders wichtig, wenn es sich bei dem Dienst um einen Prozess mit langer Laufzeit handelt, der Tage, Wochen oder sogar Monate dauert.This is especially critical if the service is a long-running process that takes days, weeks, or even months to complete. Normalerweise erfordert dies die Implementierung einer neuen Endpunktadresse für den neuen Dienst, während der ursprüngliche Endpunkt für den vorherigen Dienst weiter verwaltet wird.Usually this requires implementing a new endpoint address for the new service while maintaining the original endpoint for the previous version.

Mithilfe des Routingdiensts können Sie einen Endpunkt verfügbar machen, um Nachrichten von Clientanwendungen zu empfangen und dann jede Nachricht anhand ihres Inhalts an die richtige Endversion weiterzuleiten.By using the Routing Service, you can expose one endpoint to receive messages from client applications and then route each message to the correct service version based on the message content. Die Basisimplementierung erfordert das Hinzufügen eines benutzerdefinierten Headers zur Nachricht, der die Version des Diensts angibt, von der die Nachricht verarbeitet werden soll.The most basic implementation involves adding a custom header to the message that indicates the version of the service that the message is to be processed by. Der Routingdienst kann den XPathMessageFilter verwenden, um jede Nachricht auf das Vorhandensein des benutzerdefinierten Headers zu überprüfen und die Nachricht an den entsprechenden Zielendpunkt weiterzuleiten.The Routing Service can use the XPathMessageFilter to inspect each message for the presence of the custom header and route the message to the appropriate destination endpoint.

Die Schritte zum Erstellen einer Dienstkonfiguration für die versionsverwaltung verwendet, finden Sie unter How To: Dienstversionsverwaltung.For the steps used to create a service versioning configuration, see How To: Service Versioning. Ein Beispiel für den XPathMessageFilter zum Weiterleiten von Nachrichten basierend auf einem benutzerdefinierten Header verwenden, finden Sie unter der erweiterte Filter Beispiel.For an example of using the XPathMessageFilter to route messages based on a custom header, see the Advanced Filters sample.

DienstdatenpartitionierungService Data Partitioning

Beim Entwerfen einer verteilten Umgebung ist es häufig ratsam, die Verarbeitungslast auf mehrere Computer zu verteilen, um Hochverfügbarkeit sicherzustellen, die Verarbeitungslast für einzelne Computer zu verringern oder für eine bestimmte Teilmenge von Nachrichten dedizierte Ressourcen bereitzustellen.When designing a distributed environment, it is often desirable to spread processing load across multiple computers in order to provide high availability, decrease processing load on individual computers, or to provide dedicated resources for a specific subset of messages. Der Routingdienst ist zwar kein Ersatz für eine dedizierte Lösung für den Lastenausgleich, aber Sie können die Funktion für das inhaltsbasierte Routing verwenden, um Nachrichten, die einander ansonsten ähnlich sind, an bestimmte Ziele weiterzuleiten.While the Routing Service does not replace a dedicated load balancing solution, its ability to perform content based routing can be used to route otherwise similar messages to specific destinations. Es kann z. B. sein, dass Sie Nachrichten eines bestimmten Clients gesondert von den Nachrichten verarbeiten müssen, die Sie von anderen Clients empfangen.For example, you may have a requirement to process messages from a specific client separately from messages received from other clients.

Die Schritte zum Erstellen einer Konfiguration Partitionierung von Dienstdaten verwendet, finden Sie unter How To: Dienst Datenpartitionierung.For the steps used to create a service data partitioning configuration, see How To: Service Data Partitioning. Ein Beispiel zum Verwenden von Filtern zum Partitionieren von Daten basierend auf URL und benutzerdefinierte Header finden Sie unter der erweiterte Filter Beispiel.For an example of using filters to partition data based on URL and custom headers, see the Advanced Filters sample.

Dynamisches RoutingDynamic Routing

Häufig ist es ratsam, die Routingkonfiguration zu ändern, um auf sich ändernde Geschäftsanforderungen zu reagieren. Dies kann das Hinzufügen einer Route zu einer neueren Version eines Diensts, das Ändern von Routingkriterien oder das Ändern des Zielendpunkts einer bestimmten Nachricht sein, an den der Filter Nachrichten weiterleitet.Often it is desirable to modify the routing configuration to satisfy changing business needs, such as adding a route to a newer version of a service, changing routing criteria, or changing the destination endpoint a specific message that the filter routes to. Mit dem Routingdienst können Sie dies mithilfe von RoutingExtension durchführen. Sie können damit zur Laufzeit ein neues RoutingConfiguration-Objekt bereitstellen.The Routing Service allows you to do this through the RoutingExtension, which allows you to provide a new RoutingConfiguration during run time. Die neue Konfiguration ist sofort wirksam. Sie gilt jedoch nur für die neuen Sitzungen, die vom Routingdienst verarbeitet werden.The new configuration takes effect immediately, but only affects any new sessions processed by the Routing Service.

Die Schritte zum Implementieren von dynamisches routing verwendet, finden Sie unter Vorgehensweise: Dynamisches Update.For the steps used to implement dynamic routing, see How To: Dynamic Update. Ein Beispiel für dynamisches routing verwenden, finden Sie unter der dynamische Neukonfiguration Beispiel.For an example of using dynamic routing, see the Dynamic Reconfiguration sample.

MulticastMulticast

Beim Weiterleiten von Nachrichten werden Nachrichten normalerweise an einen bestimmten Zielendpunkt weitergeleitet.When routing messages, usually you routing each message to one specific destination endpoint. Es kann jedoch sein, dass Sie gelegentlich eine Kopie der Nachricht an mehrere Zielendpunkte weiterleiten müssen.However, you may occasionally need to route a copy of the message to multiple destination endpoints. Um das Routing per Multicast durchzuführen, müssen die folgenden Bedingungen erfüllt sein:To perform multicast routing, the following conditions must be true:

  • Die Kanalform darf nicht vom Typ "Anforderung-Antwort" sein (unidirektional oder duplex ist jedoch möglich), weil dabei vorgegeben ist, dass die Clientanwendung als Antwort auf die Anforderung nur eine Antwort empfangen kann.The channel shape must not be request-reply (though it may be one-way or duplex,) because request-reply mandates that only one reply can be received by the client application in response to the request.

  • Mehrere Filter müssen zurückgeben "true" beim Auswerten der Nachricht.Multiple filters must return true when evaluating the message.

Wenn diese Bedingungen erfüllt sind, empfängt jeder Zielendpunkt, der einem Filter mit der Rückgabe "true" zugeordnet ist, eine Kopie der Nachricht.If these conditions are met, each destination endpoint that is associated with a filter that returns true will receive a copy of the message.

ProtokollüberbrückungProtocol Bridging

Beim Weiterleiten von Nachrichten zwischen unterschiedlichen SOAP-Protokollen verwendet der Routingdienst WCF-APIs zum Konvertieren der Nachricht von einem Protokoll zum anderen.When routing messages between dissimilar SOAP protocols, the Routing Service uses WCF APIs to convert the message from one protocol to the other. Dies tritt automatisch ein, wenn die vom Routingdienst verfügbar gemachten Dienstendpunkte ein anderes Protokoll verwenden als die Clientendpunkte, an die Nachrichten weitergeleitet werden.This occurs automatically when the service endpoint(s) exposed by the Routing Service use a different protocol than the client endpoint(s) that messages are routed to. Es ist möglich, dieses Verhalten zu deaktivieren, falls keine standardmäßigen Protokolle verwendet sind. Sie müssen dann jedoch einen eigenen Überbrückungscode bereitstellen.It is possible to disable this behavior if the protocols in use are not standard; however, you must then provide your own bridging code.

sein.. Ein Beispiel über den Routingdienst, um Nachrichten zwischen Protokollen zu übersetzen, finden Sie unter der Bridging und Fehlerbehandlung Beispiel.For an example of using the Routing Service to translate messages between protocols, see the Bridging and Error Handling sample.

FehlerbehandlungError Handling

In einer verteilten Umgebung ist es nicht ungewöhnlich, dass vorübergehende Netzwerkfehler oder Kommunikationsfehler auftreten.In a distributed environment, it is not uncommon to encounter transient network or communication failures. Ohne einen Vermittlerdienst wie den Routingdienst ist die Clientanwendung für die Behandlung dieser Art von Fehlern zuständig.Without an intermediary service such as the Routing Service, the burden of handling such failures falls on the client application. Falls die Clientanwendung keine spezielle Logik für wiederholte Versuche bei Netzwerk- oder Kommunikationsfehlern aufweist und keine alternativen Zielorte kennt, kann es zu Szenarios kommen, in denen eine Nachricht mehrere Male gesendet werden muss, bevor sie vom Zieldienst erfolgreich verarbeitet wird.If the client application does not include specific logic to retry in the event of network or communication failures and knowledge of alternate locations, the user may encounter scenarios where a message must be submitted multiple times before it is successfully processed by the destination service. Dies kann bei Kunden zu Unzufriedenheit mit der Anwendung führen, weil diese ggf. als unzuverlässig wahrgenommen wird.This can lead to customer dissatisfaction with the application, as it may be perceived as unreliable.

Der Routingdienst versucht, dieses Szenario zu beheben, indem er robuste Fehlerbehandlungsfunktionen für Nachrichten bereitstellt, für die Netzwerk- oder Kommunikationsfehler auftreten.The Routing Service attempts to remedy this scenario by providing robust error handling capabilities for messages that encounter network or communication-related failures. Wenn Sie eine Liste möglicher Zielendpunkte erstellen und diese Liste jedem Nachrichtenfilter zuordnen, beseitigen Sie die Fehlerquelle (Single Point of Failure), deren Ursache die Verwendung von nur einem möglichen Ziel ist.By creating a list of possible destination endpoints and associating this list with each message filter, you remove the single point of failure incurred by having only one possible destination. Bei einem Fehler versucht der Routingdienst, die Nachricht an den nächsten Endpunkt in der Liste zu übermitteln, bis die Nachricht übermittelt wurde, ein anderer Fehler als ein Kommunikationsfehler aufgetreten ist oder alle Endpunkte abgearbeitet wurden.In the event of a failure, the Routing Service will attempt to deliver the message to the next endpoint in the list until the message has been delivered, a non-communication failure occurs, or all endpoints have been exhausted.

Die Schritte zum Konfigurieren der Fehlerbehandlung verwendet, finden Sie unter Vorgehensweise: Fehlerbehandlung.For the steps used to configure error handling, see How To: Error Handling. Ein Beispiel für die Fehlerbehandlung implementieren, finden Sie unter der Bridging und Fehlerbehandlung und erweiterte Fehlerbehandlung Beispiele.For an example of implementing error handling, see the Bridging and Error Handling and Advanced Error Handling samples.

In diesem AbschnittIn This Section

Vorgehensweise: DienstversionskontrolleHow To: Service Versioning

Vorgehensweise: DienstdatenpartitionierungHow To: Service Data Partitioning

Vorgehensweise: Dynamisches UpdateHow To: Dynamic Update

Vorgehensweise: FehlerbehandlungHow To: Error Handling

Siehe auchSee Also

Einführung in RoutingRouting Introduction