Поделиться через


Инструкция по разработке поставщика хранилища экземпляров

Следующая процедура содержит пошаговые инструкции по созданию пользовательского поставщика хранилища экземпляров. Общие сведения о поставщиках хранилищ экземпляров, запросов и управления см. в разделе Поставщики хранилищ экземпляров, запросов и управления.

  1. Создайте проект библиотеки классов.

  2. Добавьте ссылки на библиотеки Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll и System.Runtime.DurableInstancing.dll. Для компиляции кода, представленного в этом разделе, также добавьте ссылки на библиотеки System.Configuration.dll и System.Data.dll.

  3. Добавьте следующие операторы using в начале исходного файла.

    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. Создайте класс для поставщика хранилища экземпляров, наследующий от класса InstanceStoreProvider.

        public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider
        {
        }
    
  5. Реализуйте метод Initialize. Этот метод принимает контейнер свойств, соответствующий сведениям о конфигурации, указанным в файле конфигурации. Данные в этом контейнере свойств используются для создания поставщика.

    Метод Initialize вызывается перед методом CreateInstanceStore или 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. Реализуйте метод CreateInstanceStore класса InstanceStoreProvider, чтобы он возвращал объект System.Runtime.DurableInstancing.InstanceStore, который клиент будет использовать для выполнения команд над хранилищем экземпляров.

    
            public override InstanceStore CreateInstanceStore()
            {
                // the following line creates an instance of the SqlWorkflowInstanceStore class
                    SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(this.ConnectionString);
                return store;
            }
    
  7. Реализуйте метод UniqueProviderIdentifier. Уникальный идентификатор поставщика, возвращаемый этим методом, используется для определения того, не сводятся ли разные объекты поставщиков к одному и тому же базовому хранилищу.

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

Служба управления рабочими процессами (WMS) или узел рабочих процессов вызывает этот метод хранилища экземпляров для получения объекта InstanceStore, относящегося к конкретному хранилищу. AppFabric включает поставщик хранилища экземпляров для хранилища экземпляров рабочих процессов SQL, создающий объект SqlWorkflowInstanceStore при вызове метода CreateInstanceStore.

Важно!

См. раздел Порядок регистрации настраиваемых поставщиков для получения сведений о регистрации поставщика в Windows Server AppFabric.

  2011-12-05