インスタンス ストアInstance Stores

インスタンス ストアは、インスタンスの論理コンテナーです。An instance store is a logical container of instances. この場所には、インスタンス データとメタデータが格納されます。It is the place where the instance data and metadata is stored. インスタンス ストアは、専用の物理的なストレージを意味しているわけではありません。An instance store does not imply dedicated physical storage. インスタンス ストアには SQL Server データベースの永続的な情報と、メモリ内の非永続的な状態の情報が含まれます。An instance store could contain durable information in a SQL Server database or non-durable state information in a memory. .NET Framework 4.6.1.NET Framework 4.6.1 には SQL Workflow Instance Store が付属しています。これはインスタンス ストアの具象実装で、ワークフローが SQL Server 2005 または SQL Server 2008 データベースにインスタンス データとメタデータを永続化できるようにします。The .NET Framework 4.6.1.NET Framework 4.6.1 ships with the SQL Workflow Instance Store, which is a concrete implementation of an instance store that allows workflows to persist instance data and metadata into a SQL Server 2005 or SQL Server 2008 database. また、Windows Server App Fabric には、インスタンス ストアの具象実装も用意されています。In addition Windows Server App Fabric also provides a concrete implementation of an instance store. 詳細については、「 Windows Server App Fabric インスタンスストア、クエリ、およびコントロールプロバイダー」を参照してください。For more information, see Windows Server App Fabric Instance Store, Query, and Control Providers.

永続化 API は、ホストがコマンド要求 (LoadWorkflowCommandSaveWorkflowCommand など) をインスタンス ストアに送信できるようにするための、ホストとインスタンス ストア間のインターフェイスです。The persistence API is the interface between a host and an instance store that allows the host to send command requests (for example, LoadWorkflowCommand and SaveWorkflowCommand) to the instance store. この API の具象実装は、永続化プロバイダーと呼ばれます。The concrete implementation of this API is called a persistence provider. 永続化プロバイダーはホストからの要求を受け取り、インスタンス ストアを変更します。The persistence provider receives requests from a host and modifies the instance store.

ホストで多くのインスタンス ストアを使用し、インスタンス ストアを多くのホストで使用できるように、ホストとインスタンス ストアはプラグ可能です。Hosts and instance stores are pluggable so that a host can be used with many instance stores, and an instance store can be used with many hosts. 通常、インスタンス ストアは特定のホストの使用パターンに合わせて最適化されますが、インスタンス ストアとホストはそれぞれのライフ サイクルで進化する場合があります。An instance store is typically optimized for the usage patterns of a particular host, although the instance store and host may evolve on independent life cycles. たとえば、 WorkflowServiceHostSqlWorkflowInstanceStore は、うまく連携するように設計されています。For example, the WorkflowServiceHost and the SqlWorkflowInstanceStore are designed to work well together. 独自のインスタンスストアを作成して、ワークフローサービスインスタンスのデータとメタデータを永続化し、そのインスタンスストアを WorkflowServiceHostで使用することができます。You can create your own instance store to persist data and metadata of workflow service instances and use that instance store with the WorkflowServiceHost. たとえば、SQL Server データベースに保存するのではなく、OracleWorkflowInstanceStore を作成して、ワークフローに Oracle データベースに情報を永続化させることができます。For example, you can create an OracleWorkflowInstanceStore that lets workflows persist information into an Oracle database instead of saving them into a SQL Server database.

通常、ホストは保存されたオブジェクトを変更する機能を追加して拡張されます。It is common for hosts to be extended with additional functionality that modifies the persisted objects. たとえば、インスタンス永続化システムは、ワークフローホスト、"中断" 操作をサポートする拡張機能、および SQL インスタンスストアを持つことができます。For example, an instance persistence system may have a workflow host, an extension that supports the "Suspend" operation, and an SQL instance store. ワークフロー ホストは保存または読み込みなどの標準的なコマンドを送信して、インスタンス ストアに対してワークフローの保存または読み込みを行ったり、インスタンス ストアにワークフローを保存したりします。The workflow host might send a standard command such as Save or Load to save or load a workflow from an instance store or to save a workflow into an instance store. 中断されたワークフロー インスタンスが読み込まれないように、中断の拡張機能によって、ワークフロー インスタンスの保存および読み込みを行うコマンドに追加のセマンティクスが追加されます。The suspend extension might add additional semantics to the commands for saving and loading workflow instances so that a suspended workflow instance cannot be loaded. SQL インスタンス ストアの永続化プロバイダーは、ワークフロー インスタンスの保存と読み込み用のコマンドを理解し、SQL Server データベースの永続オブジェクトのテーブルを変更する適切なストアド プロシージャを呼び出して、コマンドを実装します。The persistence provider for the SQL instance store understands the commands for saving and loading workflow instances, and implements the commands by calling appropriate stored procedures that change the tables of persistent objects in an SQL Server database.

インスタンス ストア内では、ホストはインスタンスの所有者として動作します。A host acts as an instance owner within an instance store. ホストは、同時に複数のインスタンス ストアを持つ複数のインスタンスの所有者として動作します。A host may act as more than one instance owner with more than one instance store at the same time. ホストはインスタンスに関連付けられているインスタンス キーの GUID を提供します。The host provides GUIDs for instance keys associated with the instances. インスタンス キーは、インスタンスを識別する一意の別名です。An instance key is a unique alias that identifies an instance. 永続化システムは、ホストが要求したコマンドを実行するときに、インスタンスの所有者情報を作成、更新、および削除します。The persistence system creates, updates, and deletes instance owner information as it executes commands requested by hosts.

ホストとインスタンス ストアとの対話に関連する重要な手順を次に示します。The following list contains the important steps involved in the host’s interaction with the instance store:

  1. 永続化プロバイダーから InstanceStore を取得します。Obtain an InstanceStore from a persistence provider.

  2. InstanceStore のメソッドを呼び出して、インスタンスへのハンドルを取得し CreateInstanceHandle ます。 InstanceStoreObtain the handle to an instance by calling the CreateInstanceHandle method on the InstanceStore.

  3. InstanceStore のメソッドを呼び出すことによって、インスタンスハンドルに対してコマンドを呼び出し Execute ます。 InstanceStoreInvoke commands against the instance handle by calling the Execute method on the InstanceStore.

  4. InstanceView InstanceStore.Exeかわいらしいによって返されたを調べて、コマンドの結果を確認します。Examine the InstanceView returned by InstanceStore.Execute to determine the results of the commands.