ルール主導型 WCF ルーターのサンプル
SOAP ルーターは、一連のルールに基づいて、クライアントからの SOAP メッセージをアプリケーションのエンドポイントに転送する中継局です。このサンプルでは、Windows Communication Foundation (WCF) を使用して SOAP ルーターを作成します。
メモ : |
---|
このサンプルをビルドして実行するには、.NET Framework Version 3.5 をインストールする必要があります。Visual Studio 2008 では、プロジェクトとソリューション ファイルを開く必要があります。 |
ルーターは、Windows WF (Workflow Foundation) ルール エンジンを使用して、指定されたメッセージの転送先を決定するコア ルーター機能を実装します。このサンプルでは、Windows Workflow Foundation と WCF を 1 つのアプリケーションで同時に使用する方法、および Windows Workflow Foundation ルール エンジンをワークフローの外部で使用する方法 ("スタンドアロン" とよ呼ばれる) という、2 つの主な概念を示します。
メモ : |
---|
このサンプルの結果は、External RuleSet Toolkit のサンプルを使用して表示できます。 |
メモ : |
---|
このサンプルは、「WCF 中間ルーター」のサンプルに基づいています。このルーターの WCF の側面について理解を深めるには、該当するサンプルのドキュメントを参照してください。 |
このサンプルは、電卓サービス、エコー サービス、ルーター、クライアントという 4 つのプロジェクトで構成されます。このサンプルでは、電卓サービスとエコー サービスは標準の WCF サービスであり、Calculator.cs ファイルと EchoService.cs ファイルでそれぞれ定義されています。。
ルーター サービスは、WCF の拡張機能を使用してメッセージを処理するほか、トランスポート パターン (データグラム/セッション、要求/応答、双方向など) などのその他の動作も処理します。
RouterTable.cs ソース ファイルは、クライアントから受信したメッセージの転送先を決定するために WF ルール エンジンを使用するクラスを定義します。ルーターは、各メッセージを処理するときに RouterTable.SelectDestination()
を呼び出すことによって、メッセージのコンテンツに基づいて、メッセージの転送先エンドポイントのアドレスを取得します。
ここで、RouterTable.cs は Selectdestination.Rules の SelectDestination
ルール セットを実行して、どちらのエンドポイント (円卓サービスまたはエコー サービス) をメッセージの転送先にするかを決定します。
SelectDestination
ルール セットについて理解を深めたり、編集を加えたりするには、.NET Framework Version 3.5 SDK のExternal RuleSet Toolkit のサンプルを使用してルール セットを開いてください。
SelectDestination ルール セットを開くには
External RuleSet Toolkit のサンプル アプリケーションを起動します。
[Data] メニューの [Import] をクリックします。
[Open File] ダイアログ ボックスで router\SelectDestination.rules を選択します。
RuleSet エディタで
SelectDestination
ルール セットをクリックします。[Workflow/Type Selection] ダイアログ ボックスで [Browse] をクリックします。
[Open File] ダイアログ ボックスで、router/bins フォルダに移動して、WCF_Router.Router.exe をクリックします。
[Workflow/Type Selection] ダイアログ ボックスの [Contained Types] セクションで、[RoutingTable] をクリックし、[OK] をクリックします。
External RuleSet Toolkit アプリケーションでは、[SelectDestination] を展開して [Version 1.0] をクリックし、[Edit Rules] をクリックします。
External RuleSet Toolkit で開いた場合、
SelectDestination
ルール セットは図 1 のように表示されます。
図 1 : External RuleSet Toolkit の SelectDestination ルール セット
SelectDestination
ルール セットには、6 個のルールが含まれています。以下に、各ルールの説明を優先度の高い順に示します。
Initialize variables :
RouterTable
クラスの変数を初期化して、ルールの残りの部分が変数を使用できるようにします。CalculatorService : メッセージを
CalculatorService
に転送するための基準をメッセージが満たしているかどうかをチェックします (メッセージにヘッダー "calculator" が含まれている必要があります)。基準が満たされている場合は、メッセージの転送先に指定できるエンドポイントの一覧にCalculatorService
エンドポイントが追加されます。EchoService : メッセージを
EchoService
に転送するための基準をメッセージが満たしているかどうかをチェックします (メッセージにアクション メッセージ ヘッダーhttp://microsoft.servicemodel.samples/iechoservice/echo
が含まれている必要があります)。基準が満たされている場合は、メッセージの転送先に指定できるエンドポイントの一覧にEchoService
エンドポイントが追加されます。No matches : メッセージの転送先に指定できるエンドポイントがないかどうかをチェックします。true の場合は、その事実がコンソールのログに記録されます。
One match : メッセージの転送先に指定できるエンドポイントが 1 つだけあるかどうかをチェックします。true の場合は、このエンドポイントにメッセージが転送されます。
Multiple match : メッセージの転送先に指定できるエンドポイントが複数あるかどうかをチェックします。true の場合は、指定可能なエンドポイントの一覧から無作為に選択されたエンドポイントにメッセージが転送されます。
このルール セットでは、Windows Workflow Foundation ルールに対して .NET Framework Version 3.5 の機能、つまり new キーワードを使用してクラスのコンストラクタを呼び出す機能が使用されます。たとえば、CalculatorService
ルールでは、メッセージが基準を満たしている場合に、指定可能なアドレスの一覧に EndpointAddress
が追加されます。
このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。
Echo("Is anyone there?") returned: Is anyone there?
Add(5) returned: 5
Add(-3) returned: 2
サンプルをビルドして実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
ソリューションの C# 版 または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順を参照してください。
単一コンピュータ構成か複数コンピュータ構成かに応じて、「Windows Communication Foundation サンプルの実行」の手順に従います。ただし、次の例外があります。
関連項目
その他の技術情報
External RuleSet Toolkit のサンプル
中間ルーター
Copyright © 2007 by Microsoft Corporation.All rights reserved.