Share via


Procedura: sviluppare un provider di archiviazione istanza

La procedura seguente prevede l'esecuzione di passaggi per creare un provider di archiviazione istanza personalizzato. Per informazioni di carattere generale sui provider di archiviazione istanza, query e controllo, vedere Provider di archiviazione, query e controllo di istanza.

  1. Creare un progetto di libreria di classi.

  2. Aggiungere riferimenti a Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll e System.Runtime.DurableInstancing.dll, nonché a System.Configuration.dll e System.Data.dll per compilare il codice di esempio fornito in questo argomento.

  3. Aggiungere l'istruzione using seguente all'inizio del file di origine.

    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;
    
  4. Creare per il provider di archiviazione istanza una classe derivante dalla classe InstanceStoreProvider.

        public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider
        {
        }
    
  5. Implementare il metodo Initialize. Questo metodo accetta un contenitore delle proprietà che corrisponda alle informazioni di configurazione specificate nel file di configurazione. I dati presenti in tale contenitore vengono utilizzati per costruire il provider.

    Il metodo Initialize viene chiamato prima del metodo 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);
            }
    
  6. Implementare il metodo CreateInstanceStore della classe InstanceStoreProvider per restituire un oggetto System.Runtime.DurableInstancing.InstanceStore, utilizzato dal client per eseguire i comandi relativi all'archiviazione istanza.

    
            public override InstanceStore CreateInstanceStore()
            {
                // the following line creates an instance of the SqlWorkflowInstanceStore class
                    SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(this.ConnectionString);
                return store;
            }
    
  7. Implementare il metodo UniqueProviderIdentifier. L'ID provider univoco restituito da questo metodo consente di determinare se diversi oggetti provider conducono allo stesso archivio sottostante.

            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();
                    }
                }
            }
    

Workflow Management Service (WMS) o un host del flusso di lavoro richiama questo metodo sul provider di archiviazione istanza per ottenere un oggetto InstanceStore specifico per l'archivio. AppFabric include un provider di archiviazione istanza per SQL Workflow Instance Store, che crea un oggetto SqlWorkflowInstanceStore quando viene chiamato il metodo CreateInstanceStore.

Importante

Per informazioni sulla registrazione del provider con Microsoft AppFabric 1.1 per Windows Server, vedere Procedura: registrare provider personalizzati.

  2012-03-05