次の方法で共有


インスタンス ストア

インスタンス ストアは、インスタンスの論理コンテナーです。 インスタンスのデータとメタデータが格納される場所です。 インスタンス ストアは、専用の物理ストレージを意味しません。 インスタンス ストアには、SQL Server データベースの永続的な情報や、メモリ内の非永続的な状態情報が含まれる場合があります。 .NET Framework 4.6.1 には、SQL ワークフロー インスタンス ストアが付属しています。これは、インスタンス ストアの具象実装であり、ワークフローでインスタンス データとメタデータを SQL Server 2005 または SQL Server 2008 データベースに保持できます。 さらに、Windows Server App Fabric では、インスタンス ストアの具体的な実装も提供されます。 詳細については、「 Windows Server App Fabric インスタンス ストア、クエリ、およびコントロール プロバイダー」を参照してください。

永続化 API は、ホストとインスタンス ストアの間のインターフェイスです。これにより、ホストはコマンド要求 ( LoadWorkflowCommandSaveWorkflowCommandなど) をインスタンス ストアに送信できます。 この API の具体的な実装は、永続化プロバイダーと呼ばれます。 永続化プロバイダーは、ホストから要求を受け取り、インスタンス ストアを変更します。

ホストとインスタンス ストアはプラグ可能であるため、ホストは多数のインスタンス ストアで使用でき、インスタンス ストアは多数のホストで使用できます。 インスタンス ストアは通常、特定のホストの使用パターンに合わせて最適化されますが、インスタンス ストアとホストは独立したライフ サイクルで進化する可能性があります。 たとえば、 WorkflowServiceHostSqlWorkflowInstanceStore は連携するように設計されています。 独自のインスタンス ストアを作成して、ワークフロー サービス インスタンスのデータとメタデータを保持し、そのインスタンス ストアを WorkflowServiceHost で使用できます。 たとえば、OracleWorkflowInstanceStore を作成すると、ワークフローは情報を SQL Server データベースに保存するのではなく、Oracle データベースに保持できます。

ホストは、永続化されたオブジェクトを変更する追加機能を使用して拡張するのが一般的です。 たとえば、インスタンス永続化システムには、ワークフロー ホスト、"中断" 操作をサポートする拡張機能、および SQL インスタンス ストアがある場合があります。 ワークフロー ホストは、保存や読み込みなどの標準コマンドを送信して、インスタンス ストアからワークフローを保存または読み込んだり、ワークフローをインスタンス ストアに保存したりできます。 中断されたワークフロー インスタンスを読み込めないように、中断拡張機能によって、ワークフロー インスタンスを保存および読み込むためのセマンティクスがコマンドに追加される場合があります。 SQL インスタンス ストアの永続化プロバイダーは、ワークフロー インスタンスを保存および読み込むためのコマンドを理解し、SQL Server データベース内の永続オブジェクトのテーブルを変更する適切なストアド プロシージャを呼び出してコマンドを実装します。

ホストは、インスタンス ストア内のインスタンス所有者として機能します。 ホストは、複数のインスタンス ストアを同時に持つ複数のインスタンス所有者として機能する場合があります。 ホストは、インスタンスに関連付けられているインスタンス キーの GUID を提供します。 インスタンス キーは、インスタンスを識別する一意のエイリアスです。 永続化システムは、ホストによって要求されたコマンドを実行する場合に、インスタンス所有者情報を作成、更新、および削除します。

次の一覧には、ホストとインスタンス ストアの相互作用に関連する重要な手順が含まれています。

  1. 永続化プロバイダーから InstanceStore を取得します。

  2. CreateInstanceHandle メソッドを呼び出して、インスタンスへのハンドルを取得します。

  3. Execute メソッドを呼び出して、インスタンス ハンドルに対してコマンドを呼び出します。

  4. InstanceView によって返されるを調べて、コマンドの結果を確認します。