Freigeben über


Routingszenarien

Während der Routingdienst hochgradig anpassbar ist, kann es eine Herausforderung sein, effiziente Routinglogik beim Erstellen einer neuen Konfiguration von Grund auf zu entwerfen. Es gibt jedoch mehrere häufige Szenarien, denen die meisten Routingdienstkonfigurationen folgen. Obwohl diese Szenarien möglicherweise nicht direkt auf Ihre spezifische Konfiguration angewendet werden, können Sie verstehen, wie der Routingdienst für diese Szenarien konfiguriert werden kann, um den Routingdienst zu verstehen.

Allgemeine Szenarien

Die einfachste Verwendung des Routingdiensts besteht darin, mehrere Zielendpunkte zu aggregieren, um die Anzahl der Endpunkte zu reduzieren, die für die Clientanwendungen verfügbar gemacht werden, und dann nachrichtenfilter verwenden, um jede Nachricht an das richtige Ziel weiterzuleiten. Nachrichten können basierend auf logischen oder physischen Verarbeitungsanforderungen weitergeleitet werden, z. B. einem Nachrichtentyp, der von einem bestimmten Dienst verarbeitet werden muss, oder basierend auf beliebigen geschäftlichen Anforderungen, z. B. das Bereitstellen der Prioritätsverarbeitung von Nachrichten aus einer bestimmten Quelle. In der folgenden Tabelle sind einige der gängigen Szenarien und deren Auftreten aufgeführt:

Szenario Verwenden, wenn
Dienstversionsverwaltung Sie müssen mehrere Versionen eines Diensts unterstützen oder in Zukunft einen aktualisierten Dienst bereitstellen.
Dienstdatenpartitionierung Sie müssen einen Dienst auf mehreren Hosts partitionieren.
Dynamisches Update Sie müssen die Routing-Logik zur Laufzeit dynamisch neu konfigurieren, um mit sich ändernden Dienstbereitstellungen umzugehen.
Multicast Sie müssen eine Nachricht an mehrere Endpunkte senden
Protokollbrücken Sie empfangen Nachrichten über ein Transportprotokoll, und der Zielendpunkt verwendet ein anderes Protokoll.
Fehlerbehandlung Sie müssen Ausfallsicherheit für Netzwerkausfälle und Kommunikationsfehler bereitstellen

Anmerkung

Während viele der dargestellten Szenarien spezifisch für bestimmte Geschäftliche Anforderungen oder Verarbeitungsanforderungen sind, kann die Planung der Unterstützung dynamischer Updates und der Verwendung der Fehlerbehandlung häufig als bewährte Methoden angesehen werden, da sie es Ihnen ermöglichen, die Routinglogik zur Laufzeit zu ändern und aus vorübergehenden Netzwerk- und Kommunikationsfehlern wiederherzustellen.

Dienstversionsverwaltung

Bei der Einführung einer neuen Version eines Diensts müssen Sie häufig die vorherige Version beibehalten, bis alle Clients auf den neuen Dienst umgestellt sind. Dies ist besonders wichtig, wenn der Dienst ein langer Prozess ist, der Tage, Wochen oder sogar Monate dauert, bis der Dienst abgeschlossen ist. Dies erfordert in der Regel die Implementierung einer neuen Endpunktadresse für den neuen Dienst, während der ursprüngliche Endpunkt für die vorherige Version beibehalten wird.

Mithilfe des Routingdiensts können Sie einen Endpunkt für den Empfang von Nachrichten von Clientanwendungen verfügbar machen und dann jede Nachricht basierend auf dem Nachrichteninhalt an die richtige Dienstversion weiterleiten. Die grundlegendste Implementierung umfasst das Hinzufügen einer benutzerdefinierten Kopfzeile zu der Nachricht, die die Version des Diensts angibt, von dem die Nachricht verarbeitet werden soll. Der Routingdienst kann den XPathMessageFilter verwenden, um jede Nachricht auf das Vorhandensein des benutzerdefinierten Headers zu prüfen und die Nachricht an den entsprechenden Zielendpunkt weiterzuleiten.

Die Schritte zum Erstellen einer Dienstversionsverwaltungskonfiguration finden Sie unter How To: Service Versioning.

Dienstdatenpartitionierung

Beim Entwerfen einer verteilten Umgebung ist es häufig wünschenswert, die Verarbeitungslast auf mehrere Computer zu verteilen, um hohe Verfügbarkeit bereitzustellen, die Verarbeitungslast auf einzelnen Computern zu verringern oder dedizierte Ressourcen für eine bestimmte Teilmenge von Nachrichten bereitzustellen. Obwohl der Routingdienst keine dedizierte Lastenausgleichslösung ersetzt, kann die Möglichkeit, inhaltsbasiertes Routing durchzuführen, verwendet werden, um andernfalls ähnliche Nachrichten an bestimmte Ziele weiterzuleiten. Sie müssen beispielsweise Nachrichten von einem bestimmten Client getrennt von Nachrichten verarbeiten, die von anderen Clients empfangen wurden.

Die Schritte zum Erstellen einer Dienstdatenpartitionierungskonfiguration finden Sie unter How To: Service Data Partitioning.

Dynamisches Routing

Häufig ist es wünschenswert, die Routingkonfiguration so zu ändern, dass sich die geschäftlichen Anforderungen ändern, z. B. das Hinzufügen einer Route zu einer neueren Version eines Diensts, das Ändern von Routingkriterien oder das Ändern des Zielendpunkts eine bestimmte Nachricht, an die der Filter weiterleitet. Mit dem Routingdienst können Sie dies über die RoutingExtensiontun, wodurch Sie während der Laufzeit eine neue RoutingConfiguration bereitstellen können. Die neue Konfiguration wird sofort wirksam, wirkt sich jedoch nur auf neue Sitzungen aus, die vom Routingdienst verarbeitet werden.

Die Schritte zum Implementieren des dynamischen Routings finden Sie unter How To: Dynamic Update.

Multicast

Beim Weiterleiten von Nachrichten routingen Sie in der Regel jede Nachricht an einen bestimmten Zielendpunkt. Es kann jedoch vorkommen, dass Sie eine Kopie der Nachricht an mehrere Zielendpunkte weiterleiten müssen. Um Multicast-Routing durchzuführen, müssen die folgenden Bedingungen erfüllt sein:

  • Die Kanalform darf nicht Anfrage-Antwort sein (kann jedoch unidirektional oder duplex sein), da die Anfrage-Antwort vorgibt, dass nur eine Antwort von der Clientanwendung auf die Anfrage empfangen werden kann.

  • Beim Auswerten der Nachricht müssen mehrere Filter true zurückgeben.

Wenn diese Bedingungen erfüllt sind, erhält jeder Zielendpunkt, der einem Filter zugeordnet ist, der "true" zurückgibt, eine Kopie der Nachricht.

Protokollüberbrückung

Beim Weiterleiten von Nachrichten zwischen unterschiedlichen SOAP-Protokollen verwendet der Routingdienst WCF-APIs, um die Nachricht von einem Protokoll in das andere zu konvertieren. Dies geschieht automatisch, wenn die vom Routingdienst verfügbar gemachten Dienstendpunkte ein anderes Protokoll als die Clientendpunkte verwenden, an die Nachrichten weitergeleitet werden. Es ist möglich, dieses Verhalten zu deaktivieren, wenn die verwendeten Protokolle nicht standard sind; Sie müssen dann jedoch ihren eigenen Überbrückungscode angeben.

Fehlerbehandlung

In einer verteilten Umgebung ist es nicht ungewöhnlich, dass vorübergehende Netzwerk- oder Kommunikationsfehler auftreten. Ohne einen zwischengeschalteten Dienst wie z. B. den Routingdienst fällt der Aufwand für die Behandlung solcher Fehler auf die Clientanwendung. Wenn die Clientanwendung keine spezifische Logik zum Wiederholen im Falle von Netzwerk- oder Kommunikationsfehlern enthält, kann der Benutzer auf Szenarien stoßen, in denen eine Nachricht mehrmals übermittelt werden muss, bevor sie vom Zieldienst erfolgreich verarbeitet wird. Dies kann zu Unzufriedenheit der Kunden mit der Anwendung führen, da sie als unzuverlässig wahrgenommen werden kann.

Der Routingdienst versucht, dieses Szenario zu beheben, indem es robuste Fehlerbehandlungsfunktionen für Nachrichten bereitstellt, die auf Netzwerk- oder Kommunikationsfehler stoßen. Indem Sie eine Liste möglicher Zielendpunkte erstellen und diese Liste jedem Nachrichtenfilter zuordnen, entfernen Sie den einzelnen Fehlerpunkt, der durch nur ein mögliches Ziel entsteht. Im Falle eines Fehlers versucht der Routingdienst, die Nachricht an den nächsten Endpunkt in der Liste zu übermitteln, bis die Nachricht übermittelt wurde, ein Nichtkommunikationsfehler auftritt oder alle Endpunkte erschöpft wurden.

Die Schritte zum Konfigurieren der Fehlerbehandlung finden Sie unter How To: Error Handling.

In diesem Abschnitt

Anleitung: Dienstversionierung

Gewusst wie: Dienstdatenpartitionierung

Anleitung: Dynamisches Update

Vorgehensweise: Fehlerbehandlung

Siehe auch