Windows Server AppFabric 監視ストアからの追跡対象変数の取得

このサンプルでは、Entity Framework を使用して、AppFabric 監視データベースから追跡対象ワークフロー変数を取得およびシリアル化解除する方法を示します。これを可能にするために、監視データベースによって公開されるパブリック ビューのいくつかについて学習します。このサンプルは任意のアプリケーションと組み合わせることができます。AppFabric サンプル用に作成された一般的な Windows Server AppFabric サンプル アプリケーションの使用をお勧めします。このアプリケーションを検索するには、<サンプル>\SampleApplication\OrderApplication フォルダーに移動します。ここで、<サンプル> は、AppFabric サンプルのインストール先のパスになります。

ヒント

サンプルは学習用としてのみ提供されています。運用環境での使用を目的としておらず、運用環境でのテストも行われていません。サンプルについてマイクロソフトのテクニカル サポートは提供されません。

前提条件

  • Windows Server AppFabric がインストールされており、監視が構成されていること。

  • AppFabric で 1 つ以上の WCF または WF サービスがホストされていること。

ヒント

このサンプルは、サービスが複合型の変数を追跡するように構成されている場合の監視機能をよりわかりやすく説明しています。

カスタム アセンブリの追跡対象変数をシリアル化解除する場合、そのアセンブリ (たとえば、AppFabric サンプル アプリケーション) をこのプロジェクトに参照として追加してください。これにより、それらの追跡対象変数を適切にシリアル化解除できます。

サンプル ファイル

このサンプルには、以下のファイルが付属しています。

  • Visual Studio 2010 ソリューション構造およびサポート コード ファイル

  • TrackedWFVariable.cs

  • Program.cs

このサンプルの設定と実行

  1. 変数が追跡されており、監視データベースに保存されていることを確認します。これを行うには、WFEventProperties ビューを調べて、行が存在していることを確認します。

  2. このサンプルに付属している Visual Studio ソリューションを開きます。

    重要

    AppFabric 監視データベースに対して読み取りアクセス権があるアカウントで実行していることを確認します。

  3. Program.cs でデータベースの値を編集し、目的のデータベースを指すように設定します。

  4. Program.cs で AppFabricMonitoringEntities コンストラクターに渡される値を編集します。既定では、この値は SQL Express インスタンスを参照しています。単純にするために、ファイルの先頭に標準の SQL インスタンス名が付記されています。

  5. F5 キーを押して、サンプルをビルドして実行します。

このサンプルについて

Program.cs は Entity Framework を使用して、データベースに最新のワークフロー イベントを照会します。TrackedWFVariable クラスは Entity Framework のデータ コンテキストを使用して接続し、最近のイベントに関連付けられている WFEventProperty 行を取得します。プロパティは、元の .NET 型にシリアル化解除されます。このプロセスは、シリアル化解除されるオブジェクトの型によって異なります。

以下の型は、WFEventProperties ビューの Value 列に単純な文字列表現として格納されています。

  • System.String

  • System.Char

  • System.Boolean

  • System.Int32

  • System.Int16

  • System.Int64

  • System.UInt32

  • System.UInt16

  • System.UInt64

  • System.Single

  • System.Double

  • System.Guid

  • System.DateTimeOffset

  • System.DateTime

これらの型は、これらの型で定義されている静的 Parse メソッドを呼び出して、文字列値をパラメーターとして渡すことによってシリアル化解除できます。その他のすべての型は、WFEventProperties ビューの ValueBlob 列に値が格納されており、System.Runtime.Serialization.NetDataContractSerializer を使用してシリアル化解除する必要があります。そのためには、シリアル化解除する型を宣言しているアセンブリがロードされている必要があります。オブジェクトがこのような方法でデータベースに格納されているのは、前述の単純な型を SQL クライアントで簡単に照会できるようにするためです。

このサンプルの削除

このサンプルによる影響は何もありません。必要に応じて、サンプル ファイルを削除できます。

  2011-12-05