RoutingverträgeRouting Contracts

Routingverträge definieren die Nachrichtenmuster, die der Routingdienst verarbeiten kann.Routing contracts define the message patterns that the Routing Service can process. Jeder Vertrag ist typenlos und ermöglicht es dem Dienst, eine Nachricht ohne Kenntnis des Nachrichtenschemas oder der Nachrichtenaktion zu empfangen.Each contract is typeless and allows the service to receive a message without knowledge of the message schema or action. Auf diese Weise kann der Routingdienst Nachrichten generisch weiterleiten, ohne dass eine zusätzliche Konfiguration für die Einzelheiten der zugrunde liegenden weitergeleiteten Nachrichten erforderlich ist.This allows the Routing Service to generically route messages without additional configuration for the specifics of the underlying messages being routed.

RoutingverträgeRouting Contracts

Da der Routingdienst ein generisches WCF-Nachrichtenobjekt akzeptiert, ist der wichtigste Aspekt bei der Auswahl eines Vertrags die Form des Kanals, der für die Kommunikation mit den Clients und Diensten verwendet wird.Because the Routing Service accepts a generic WCF Message object, the most important consideration when selecting a contract is the shape of the channel that will be used when communicating with the clients and services. Beim Verarbeiten von Nachrichten verwendet der Routingdienst symmetrische Nachrichtensysteme. Die Form des eingehenden Vertrags muss im Allgemeinen also der Form des ausgehenden Vertrags entsprechen.When processing messages, the Routing Service uses symmetrical message pumps, so generally the shape of the inbound contract must match the shape of the outbound contract. Es gibt jedoch Fälle, in dem Verteiler des Dienstmodells die Formen, z. B. wenn der Verteiler einen Duplexkanal in einen Anforderung / Antwort-Kanal konvertiert oder die sitzungsunterstützung aus einem Kanal entfernt, wenn es nicht erforderlich ist und wird (d. h. nicht verwendet ändern können Wenn SessionMode.Allowed, beim Konvertieren einer IInputSessionChannel in ein IInputChannel).However, there are cases where the Service Model’s dispatcher can modify the shapes, such as when the dispatcher converts a duplex channel into a request-reply channel, or removes the session support from a channel when it is not required and is not being used (that is, when SessionMode.Allowed, converting an IInputSessionChannel into an IInputChannel).

Zur Unterstützung dieser Nachrichtensysteme stellt der Routingdienst Verträge im System.ServiceModel.Routing-Namespace bereit, die verwendet werden müssen, wenn vom Routingdienst genutzte Dienstendpunkte definiert werden.To support these message pumps, the Routing Service provides contracts in the System.ServiceModel.Routing namespace, which must be used when defining the service endpoints used by the Routing Service. Diese Verträge sind typenlos, sodass jede Art von Nachrichtentyp oder -aktion empfangen werden kann. Außerdem kann der Routingdienst so Nachrichten ohne Kenntnis des jeweiligen Nachrichtenschemas behandeln.These contracts are typeless, which allows the receipt of any message type or action, and allows the Routing Service to handle messages without knowledge of the specific message schema. Weitere Informationen zu den Verträgen, die vom Routingdienst verwendet, finden Sie unter Routing Verträge.For more information about the contracts used by the Routing Service, see Routing Contracts.

Die vom Routingdienst bereitgestellten Verträge befinden sich im System.ServiceModel.Routing-Namespace und sind in der folgenden Tabelle beschrieben.The contracts provided by the Routing Service are located in the System.ServiceModel.Routing namespace, and are described in the following table.

VertragContract FormShape KanalformChannel Shape
ISimplexDatagramRouter SessionMode = SessionMode.AllowedSessionMode = SessionMode.Allowed

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true
IInputChannel -> IOutputChannelIInputChannel -> IOutputChannel
ISimplexSessionRouter SessionMode = SessionMode.RequiredSessionMode = SessionMode.Required

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true
IInputSessionChannel -> IOutputSessionChannelIInputSessionChannel -> IOutputSessionChannel
IRequestReplyRouter SessionMode = SessionMode.AllowedSessionMode = SessionMode.Allowed

AsyncPattern = trueAsyncPattern = true
IReplyChannel -> IRequestChannelIReplyChannel -> IRequestChannel
IDuplexSessionRouter SessionMode=SessionMode.RequiredSessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)CallbackContract=typeof(ISimplexSession)

AsyncPattern = trueAsyncPattern = true

IsOneWay = trueIsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)TransactionFlow(TransactionFlowOption.Allowed)
IDuplexSessionChannel -> IDuplexSessionChannelIDuplexSessionChannel -> IDuplexSessionChannel

Siehe auchSee Also

RoutingdienstRouting Service
Einführung in RoutingRouting Introduction