次の方法で共有


ルーティング コントラクト

ルーティング コントラクトは、ルーティング サービスが処理できるメッセージ パターンを定義します。 各コントラクトは型指定されておらず、サービスは、メッセージ スキーマやアクションを認識していない場合でもメッセージを受信できます。 このため、ルーティング サービスは、ルーティングされる基盤のメッセージの詳細構成を追加することなく、メッセージをジェネリックにルーティングできます。

ルーティング コントラクト

ルーティング サービスには汎用 WCF メッセージ オブジェクトを使用できるため、コントラクトを選ぶ場合の最大の検討事項は、クライアントとサービスとの通信時に使用されるチャネルの形状です。 ルーティング サービスは、メッセージを処理するときに対象型メッセージ ポンプを使用するため、通常、受信コントラクトの形状は、送信コントラクトの形状と一致します。 ただし、サービス モデルのディスパッチャーがこの形状を変更する場合があります。たとえば、ディスパッチャーは、二重チャネルを要求/応答チャネルに変換したり、セッションのサポートが不要で使用されていない場合に、このサポートを削除 (つまり、SessionMode.Allowed が設定されている場合に、IInputSessionChannelIInputChannel に変更) したりします。

これらのメッセージ ポンプをサポートするために、ルーティング サービスでは、System.ServiceModel.Routing 名前空間にコントラクトを用意しています。これらのコントラクトは、ルーティング サービスが使用するサービス エンドポイントを定義するときに、使用される必要があります。 これらのコントラクトは型指定されていないため、どのようなメッセージの種類やアクションでも受信でき、ルーティング サービスは、特定のメッセージ スキーマを認識しない場合でもメッセージを処理できます。 ルーティング サービスが使用するコントラクトの詳細については、「ルーティング コントラクト」を参照してください。

ルーティング サービスによって提供されるコントラクトは、System.ServiceModel.Routing 名前空間に含まれています。これらのコントラクトは、次の表のとおりです。

コントラクト 図形 チャネル形状
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

関連項目