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

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

  1. Выполнять файлы сценария, которые создают физическое хранилище экземпляров и устанавливают сборки поставщика на компьютере.

  2. Добавлять определение поставщика хранилища экземпляров в корневой файл Web.config.

  3. Добавлять определение хранилища экземпляров в файл Web.config.

  4. Настраивать реакцию хранилища экземпляров по отношению к службе в файле конфигурации, связанном с этой службой.

В этом разделе описывается добавление определения поставщика, определения хранилища и реакции хранилища в файл конфигурации.

Определение поставщика хранилища экземпляров

Необходимо определить поставщика хранилища экземпляров в корневом файле Web.config для каждого типа хранилища экземпляров, который будет использоваться в Windows Server AppFabric. Определение поставщика хранилища экземпляров состоит из следующих параметров:

Примечание

Файл web.config компьютера можно найти в двух местах: в папке <диск>\Windows\Microsoft.NET\Framework\v4.0.30319\Config и в каталоге, в котором размещено приложение.

  • Имя. Указывает имя поставщика хранилища экземпляров. Этот параметр является обязательным.

  • Поставщик хранилища. Указывает полное имя типа, реализующего абстрактный класс InstanceStoreProvider, и сборку, содержащую этот тип. Этот параметр является обязательным.

  • Поставщик запросов. Указывает полное имя типа, реализующего абстрактный класс InstanceQueryProvider, и сборку, содержащую этот тип. Этот параметр является обязательным. Если хранилище не реализует поставщика запросов, можно указать пустую строку в качестве значения этого параметра.

  • Поставщик управления. Указывает полное имя типа, реализующего абстрактный класс InstanceControlProvider, и сборку, содержащую этот тип. Этот параметр является обязательным. Если хранилище не реализует поставщика управления, можно указать пустую строку в качестве значения этого параметра.

Программа установки AppFabric добавляет определения поставщика хранилища для поставщика хранилища экземпляров, относящегося к хранилищу экземпляров рабочих процессов SQL, как показано в следующем примере.

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <instanceStoreProviders>
                <add name="sqlStoreProvider"
                    storeProvider="Microsoft.ApplicationServer.StoreProvider.Sql.SqlWorkflowInstanceStoreFactory, Microsoft.ApplicationServer.StoreProvider, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                    queryProvider="Microsoft.ApplicationServer.StoreManagement.Sql.Query.SqlInstanceQueryProvider, Microsoft.ApplicationServer.StoreManagement, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                    controlProvider="Microsoft.ApplicationServer.StoreManagement.Sql.Control.SqlInstanceControlProvider, Microsoft.ApplicationServer.StoreManagement, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </instanceStoreProviders>
        </persistence>
    </microsoft.applicationServer>
</configuration>

Во время установки пользовательского поставщика хранилища экземпляров следует добавить определения поставщика хранилища в корневой файл Web.config аналогично добавлению определения поставщика экземпляров SQL во время установки AppFabric. Как видно по предыдущему примеру, определение поставщика является частью раздела конфигурации Windows Server AppFabric (Microsoft.ApplicationServer). Поэтому необходимо установить AppFabric до установки пользовательских поставщиков хранилищ. При установке поставщика хранилища до установки AppFabric необходимо вручную добавить соответствующие разделы конфигурации поставщика хранилища в корневой файл Web.config. При удалении AppFabric удаляется весь раздел Microsoft.ApplicationServer. Может понадобиться удалить пользовательского поставщика хранилища экземпляров (не определение, а сборку, содержащую тип поставщика хранилища) до или после удаления AppFabric.

Определение хранилища экземпляров

Определение хранилища экземпляров служит для определения определенного типа хранилища. Определение хранилища содержит следующие параметры:

  1. Имя. Указывает имя поставщика хранилища экземпляров. Этот параметр является обязательным. Значением этого параметра может быть пустая строка.

  2. Описание. Указывает описание хранилища экземпляров. Это параметр не является обязательным. Значением по умолчанию для этого параметра является пустая строка.

  3. Поставщик хранилища. Указывает имя поставщика хранилища для хранилища экземпляров. Этот параметр является обязательным.

  4. Дополнительные атрибуты. Указывает дополнительные атрибуты, представленные в виде пар имя-значение. Адрес хранилища (например, строка подключения к поставщику хранилища экземпляров SQL) должен быть определен с помощью одного из этих параметров. В противном случае службы управления рабочими процессами не сможет подключиться к хранилищу.

В следующем примере показаны хранилища экземпляров, определенные в корневом файле Web.config. Необходимо добавить любое пользовательское хранилище экземпляров аналогичным способом.

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <instanceStores>
                <add name="storeA"
                    provider="sqlStoreProvider"
                    connectionStringName="storeA-str" />
                <add name="storeB"
                    provider="sqlStoreProvider"
                    connectionStringName="storeB-str" />
                <add name="storeC"
                    provider="MyStoreProvider"
                    MyAddressStringName="storeC-str"
                    value1="rrr"
                    value2="sss"
                    value3="ttt" />
            </instanceStores>
        </persistence>
    </microsoft.applicationServer>
</configuration>

Хранилище, определенное в более высокой области определения, автоматически наследуется нижестоящими областями. Можно удалить наследованное определение хранилище из области, используя элемент <remove /> или </clear>.

Расширение реакции хранилища экземпляров

Необходимо определить элемент расширения реакции для хранилища экземпляров, чтобы пользователь мог сопоставить службу с хранилищем экземпляров. При установке AppFabric добавляется следующий элемент расширения реакции в файл machine.config, чтобы можно было использовать объект sqlWorkflowInstanceStoreBehavior для службы. Так же следует добавить определение реакции хранилища во время установки поставщика хранилища.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="sqlWorkflowInstanceStore" type="System.ServiceModel.Activities.Configuration.SqlWorkflowInstanceStoreElement, System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

Расширения реакции и обработчики разделов, например SqlWorkflowInstanceStore и workflowInstanceControl в файле machine.config, определяют безымянную реакцию с параметрами по умолчанию на корневом уровне. Добавьте в файл machine.config расширения реакции, относящиеся к хранилищу, а также обработчики разделов. Программа установки AppFabric автоматически добавляет расширение реакции для реакций SqlWorkflowInstanceStore и WorkflowInstanceControl.

Настройка службы для использования реакции и хранилища

Чтобы включить сохраняемость службы, необходимо определить реакцию хранилища экземпляров в файле Web.config, связанном с приложением или службой, и сопоставить службу с этой реакцией. В следующем примере показано примерное определение реакции sqlWorkflowInstanceStore. Значение connectionStringName задается равным определению хранилища экземпляров, которое указывает на строку подключения.

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name=”myServiceBehavior”>
                <sqlWorkflowInstanceStore
                    connectionStringName="storeA-str"
                    instanceCompletionAction=”DeleteAll”
                    instanceLockedExceptionAction=”NoRetry”
                    hostLockRenewalPeriod=”00:00:30”
                    runnableInstanceDetectionPeriod=”00:00:10” />
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>

Конфигурация хранилища экземпляров рабочих процессов SQL

Программа установки Windows Server AppFabric создает определение поставщика хранилища экземпляров для хранилища экземпляров рабочих процессов SQL в корневом файле Web.config. Можно использовать средство конфигурации Windows Server AppFabric, которое служит для выполнения приведенных ниже функций.

  • Создает определение хранилища экземпляров рабочих процессов SQL в корневом файле Web.config. Это определение содержит строку подключения, которая относится к базе данных ApplicationServerExtension.

  • Создает физическое хранилище сертификатов — базу данных SQL Server с именем ApplicationServerExtensions.

  • Устанавливает службу управления рабочими процессами в качестве службы Windows. Добавляет раздел конфигурации WMS по умолчанию в корневой файл Web.config с параметром автоматического обнаружения службой WMS хранилищ экземпляров.

  2011-12-05