Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Routingverträge definieren die Nachrichtenmuster, die der Routingdienst verarbeiten kann. Jeder Vertrag ist typlos und ermöglicht es dem Dienst, eine Nachricht ohne Kenntnis des Nachrichtenschemas oder der Aktion zu empfangen. Auf diese Weise kann der Routingdienst Nachrichten ohne zusätzliche Konfiguration für die Besonderheiten der zugrunde liegenden Nachrichten, die weitergeleitet werden, generisch weiterleiten.
Routingverträge
Da der Routingdienst ein generisches WCF-Nachrichtenobjekt akzeptiert, ist die wichtigste Überlegung beim Auswählen eines Vertrags die Form des Kanals, der bei der Kommunikation mit den Clients und Diensten verwendet wird. Bei der Verarbeitung von Nachrichten verwendet der Routingdienst symmetrische Nachrichtenpumpen, daher muss die Form des eingehenden Vertrags im Allgemeinen mit der Form des ausgehenden Vertrags übereinstimmen. Es gibt jedoch Fälle, in denen der Verteiler des Dienstmodells die Shapes ändern kann, z. B. wenn der Dispatcher einen Duplexkanal in einen Anforderungsantwortkanal konvertiert, oder die Sitzungsunterstützung aus einem Kanal entfernt wird, wenn er nicht erforderlich ist und nicht verwendet wird (d. h. wenn SessionMode.Allowed, konvertieren Sie einen IInputSessionChannel in einen IInputChannel).
Zur Unterstützung dieser Nachrichtenpumpen stellt der Routingdienst Verträge im System.ServiceModel.Routing Namespace bereit, die beim Definieren der vom Routingdienst verwendeten Dienstendpunkte verwendet werden müssen. Diese Verträge sind typlos, wodurch der Empfang eines beliebigen Nachrichtentyps oder jeder Aktion ermöglicht wird und der Routingdienst Nachrichten ohne Kenntnis des spezifischen Nachrichtenschemas verarbeiten kann. Weitere Informationen zu den Verträgen, die vom Routingdienst verwendet werden, finden Sie unter Routingverträge.
Die vom Routingdienst bereitgestellten Verträge befinden sich im System.ServiceModel.Routing Namespace und werden in der folgenden Tabelle beschrieben.
| Vertrag | Gestalt | Kanalform |
|---|---|---|
| ISimplexDatagramRouter | SessionMode = SessionMode.Allowed AsyncPattern = true IsOneWay = true |
IInputChannel -> IOutputChannel |
| ISimplexSessionRouter | SessionMode = SessionMode.Required AsyncPattern = true IsOneWay = true |
IInputSessionChannel -> IOutputSessionChannel |
| IRequestReplyRouter | SessionMode = SessionMode.Allowed AsyncPattern = true |
IReplyChannel -> IRequestChannel |
| IDuplexSessionRouter | SessionMode=SessionMode.Required CallbackContract=typeof(ISimplexSession) AsyncPattern = true IsOneWay = true TransactionFlow(TransactionFlowOption.Allowed) |
IDuplexSessionChannel -> IDuplexSessionChannel |