Инструкция по разработке поставщика хранилища экземпляров
Следующая процедура содержит пошаговые инструкции по созданию пользовательского поставщика хранилища экземпляров. Общие сведения о поставщиках хранилищ экземпляров, запросов и управления см. в разделе Поставщики хранилищ экземпляров, запросов и управления.
Создайте проект библиотеки классов.
Добавьте ссылки на библиотеки Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll и System.Runtime.DurableInstancing.dll. Для компиляции кода, представленного в этом разделе, также добавьте ссылки на библиотеки System.Configuration.dll и System.Data.dll.
Добавьте следующие операторы 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;
Создайте класс для поставщика хранилища экземпляров, наследующий от класса InstanceStoreProvider.
public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider { }
Реализуйте метод 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); }
Реализуйте метод 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; }
Реализуйте метод 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