ルーティングの概要

サービス指向アーキテクチャー ソリューションを設計するときは、多くの場合、一連のカスタマイズ可能なルールを基に、受信メッセージをそれぞれの送信先にルーティングする中間サービスを作成すると便利です。中間サービスを用意すると、次のような便利な機能を実現できます。

  • コンテンツ ベースのルーティング

    • サービスの集計

    • サービスのバージョン管理

    • 優先度ルーティング

  • プロトコル ブリッジ

  • エラー処理

上記の機能の 1 つ以上を実現する中間サービスを作成することもできますが、このような実装では、特定のシナリオまたはソリューションに制限され、新しいアプリケーションにすぐに適用できません。

ルーティング サービスは、動的に構成できるプラグ可能な汎用の SOAP 中継局を提供します。この中継局は、WCF のサービスおよびチャネル モデルで構成され、SOAP ベースのメッセージのコンテンツ ベースのルーティングを実行できます。

Ee517423.note(ja-jp,VS.100).gif注 :
ルーティング サービスは、現在 WCF REST サービスのルーティングをサポートしていません。REST 呼び出しをルーティングする場合は、System.Web.Routing またはアプリケーション要求ルーティング処理 (https://go.microsoft.com/fwlink/?LinkId=164589) を使用することを検討してください。

コンテンツ ベースのルーティング

コンテンツ ベースのルーティングは、メッセージに含まれている 1 つ以上の値に基づいて、メッセージをルーティングする機能です。ルーティング サービスでは、各メッセージを確認し、メッセージの内容と開発者が作成したルーティング ロジックに基づいて、送信先エンドポイントにメッセージをルーティングします。コンテンツ ベースのルーティングは、サービス集計、サービスのバージョン管理、および優先度ルーティングの基礎になります。

ルーティング サービスを使用すると、コンテンツ ベースのルーティングの実行に使用するロジックを構成できるほか、ルーティング ロジックを実行時に動的に更新できます。

サービスの集計

コンテンツ ベースのルーティングを使用することで、外部のクライアント アプリケーションからメッセージを受信する 1 つのエンドポイントを公開し、メッセージ内の値に基づいて、各メッセージを適切な内部エンドポイントにルーティングできます。これは、さまざまなバックエンド アプリケーションに対して単一のエンドポイントを提供する場合だけでなく、アプリケーションをさまざまなサービスにファクタリングしているときに単一のアプリケーション エンドポイントを顧客に提供する場合にも便利です。

サービスのバージョン管理

ソリューションを新しいバージョンに移行するときに、既存の顧客に対応するために、古いバージョンを同時に維持する必要がある場合があります。このような場合の多くでは、新しいバージョンに接続するクライアントが、ソリューションとの通信時に別のアドレスを使用することが必要になります。ルーティング サービスを使用すると、メッセージに含まれるバージョン固有の情報に基づいて、適切なソリューションにメッセージをルーティングすることで、ソリューションの両方のバージョンに対応する単一のサービス エンドポイントを公開できます。

優先度ルーティング

サービスを複数のクライアントに提供するときに、パートナーとサービス レベル アグリーメント (SLA) を結び、それらのパートナーのデータをすべて、その他のクライアントのデータとは別に処理するように規定している場合があります。メッセージに含まれる顧客固有の情報を検索するフィルターを使用すると、特定のパートナーから送られたメッセージを、各パートナーの SLA 要件に合わせて作成されたエンドポイントに容易にルーティングできます。

プロトコル ブリッジ

中継局シナリオの課題の 1 つは、内部エンドポイントとメッセージの送信先エンドポイントのトランスポートまたは SOAP バージョンの要件が異なる場合があることです。このシナリオをサポートするために、ルーティング サービスでは、SOAP メッセージを送信先エンドポイントが必要とする MessageVersion に合わせて処理するなど、プロトコル間をブリッジできます。これを利用して、内部の通信と外部の通信に別々のプロトコルを使用することができます。

エラー処理

中継局で発生するもう一つの問題は、送信先への転送中にエラーが発生したときの対処方法です。ルーティング サービスを使用すると、プライマリの送信先への送信中に通信エラーが発生した場合に、メッセージの送信に使用される追加のエンドポイントを定義できます。これを利用して、ネットワーク エラーなどの通信エラーが発生した場合のバックアップとして、サービスの冗長コピーを複数配置できます。