Compartir a través de


Almacenes de instancias

Un almacén de instancias es un contenedor lógico de instancias. Es el lugar donde se almacenan los datos de instancia y los metadatos. Un almacén de instancias no implica almacenamiento físico dedicado. Un almacén de instancias podría contener información duradera en una base de datos de SQL Server o información de estado no duradera en una memoria. .NET Framework 4.6.1 se incluye con el almacén de instancias de flujo de trabajo de SQL, que es una implementación concreta de un almacén de instancias que permite a los flujos de trabajo conservar los datos de instancia y los metadatos en una base de datos de SQL Server 2005 o SQL Server 2008. Además, App Fabric de Windows Server también proporciona una implementación concreta de un almacén de instancias. Para obtener más información, vea Almacén de instancias de Windows Server App Fabric, Proveedores de consultas y control.

La API de persistencia es la interfaz entre un host y un almacén de instancias que permite al host enviar solicitudes de comandos (por ejemplo, LoadWorkflowCommand y SaveWorkflowCommand) al almacén de instancias. La implementación concreta de esta API se denomina proveedor de persistencia. El proveedor de persistencia recibe solicitudes de un host y modifica el almacén de instancias.

Los hosts y los almacenes de instancias son conectables, de forma que un host puede usarse con varios almacenes de instancias y un almacén de instancias, con varios hosts. Normalmente, un almacén de instancias está optimizado para los patrones de uso de un host determinado, aunque el almacén de instancias y el host pueden evolucionar en ciclos de vida independientes. Por ejemplo, WorkflowServiceHost y SqlWorkflowInstanceStore están diseñados para funcionar bien juntos. Puede crear su propio almacén de instancias para conservar los datos y metadatos de las instancias de servicio de flujo de trabajo y usar ese almacén de instancias con WorkflowServiceHost. Por ejemplo, puede crear una instancia de OracleWorkflowInstanceStore que permita que los flujos de trabajo conserven información en una base de datos de Oracle en lugar de guardarlos en una base de datos de SQL Server.

Es habitual que los hosts se extiendan con funcionalidad adicional que modifica los objetos persistentes. Por ejemplo, un sistema de persistencia de instancias puede tener un host de flujo de trabajo, una extensión que admita la operación "Suspender" y un almacén de instancias de SQL. El host de flujo de trabajo puede enviar un comando estándar como Guardar o Cargar para guardar o cargar un flujo de trabajo desde un almacén de instancias o para guardar un flujo de trabajo en un almacén de instancias. La extensión de suspensión podría agregar semántica adicional a los comandos para guardar y cargar instancias de flujo de trabajo para que no se pueda cargar una instancia de flujo de trabajo suspendida. El proveedor de persistencia del almacén de instancias de SQL entiende los comandos para guardar y cargar instancias de flujo de trabajo e implementa los comandos mediante una llamada a procedimientos almacenados adecuados que cambian las tablas de objetos persistentes en una base de datos de SQL Server.

Un host actúa como propietario de una instancia en un almacén de instancias. Puede actuar al mismo tiempo como propietario de más de una instancia y disponer de varios almacenes de instancias. El host proporciona GUID para las claves de instancia asociadas a las instancias. Una clave de instancia es un alias único que identifica una instancia. El sistema de persistencia crea, actualiza y elimina la información del propietario de la instancia a medida que ejecuta comandos solicitados por los hosts.

La lista siguiente contiene los pasos importantes implicados en la interacción del host con el almacén de instancias:

  1. Obtener un InstanceStore de un proveedor de persistencia.

  2. Obtenga el identificador de una instancia llamando al CreateInstanceHandle método en InstanceStore.

  3. Invoque comandos del identificador de instancia llamando al método Execute en InstanceStore.

  4. Examine el InstanceView valor devuelto por InstanceStore.Execute para determinar los resultados de los comandos.