Cómo Desarrollar un proveedor de almacenes de instancias
El procedimiento siguiente consta de varios pasos destinados a crear un proveedor de almacén de instancias personalizado. Para obtener información general acerca de los proveedores de control, consultas y almacenes de instancias, vea Proveedores de almacenes de instancias, consultas y control.
Cree un proyecto de biblioteca de clases.
Agregue referencias a Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll y System.Runtime.DurableInstancing.dll. Asimismo, agregue referencias a System.Configuration.dll y System.Data.dll para compilar el código de ejemplo proporcionado en este tema.
Agregue las siguientes instrucciones using al principio del archivo de origen.
using Microsoft.ApplicationServer.StoreProvider; using System.Runtime.DurableInstancing; using System.Activities.DurableInstancing; //for the sample code provided in the methods using System.Collections.Specialized; using System.Data; using System.Data.SqlClient;
Cree una clase para el proveedor de almacén de instancias derivada de la clase InstanceStoreProvider.
public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider { }
Implemente el método Initialize. Este método acepta un contenedor de propiedades que corresponde a la información de configuración especificada en el archivo de configuración. Los datos de este contenedor de propiedades se usan para crear el proveedor.
El método Initialize se llama antes de que se llamen los métodos CreateInstanceStore o UniqueProviderIdentifier.
string ConnectionString { get; set; } public override void Initialize(string name, NameValueCollection config) { this.ConnectionString= config["connectionString"]; // Initialize the base class base.Initialize(name, config); }
Implemente el método CreateInstanceStore de la clase InstanceStoreProvider para que devuelva un objeto System.Runtime.DurableInstancing.InstanceStore, que el cliente usará para ejecutar comandos contra el almacén de instancias.
public override InstanceStore CreateInstanceStore() { // the following line creates an instance of the SqlWorkflowInstanceStore class SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(this.ConnectionString); return store; }
Implemente el método UniqueProviderIdentifier. El identificador de proveedor exclusivo que este método devuelve se usa para determinar si los diferentes objetos de proveedor se resuelven en el mismo almacén subyacente.
string UniqueStoreIdentifier { get; set; } public override string UniqueProviderIdentifier() { this.UniqueStoreIdentifier = GetUniqueStoreIdentifier(this.ConnectionString); return this.UniqueStoreIdentifier; } private string GetUniqueStoreIdentifier(string connectionString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand()) { command.CommandType = CommandType.Text; command.CommandText = "SELECT TOP (1) [StoreIdentifier] FROM [Microsoft.ApplicationServer.DurableInstancing].[StoreVersion]"; command.Connection = connection; command.Connection.Open(); Guid identifier = (Guid)command.ExecuteScalar(); return identifier.ToString(); } } }
El Servicio de administración de flujos de trabajo (WMS) o un host de un flujo de trabajo invoca este método en el proveedor de almacén de instancias para obtener un objeto InstanceStore específico para el almacén. AppFabric incluye un proveedor de almacén de instancias para el Almacén de instancias de flujo de trabajo de SQL, que crea un objeto SqlWorkflowInstanceStore cuando se llama al método CreateInstanceStore.
Importante |
---|
Vea Cómo registrar proveedores personalizados para obtener información sobre cómo registrar el proveedor con Windows Server AppFabric. |
2011-12-05