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

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

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

ルーティング サービスには汎用 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

参照

概念

ルーティングの概要

その他のリソース

Routing Service