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

Хранилище экземпляров — это логический контейнер для экземпляров. Это место, в котором хранятся данные и метаданные экземпляров. Хранилище экземпляров не подразумевает использование специализированного физического хранилища. Вместо этого хранилище экземпляров может держать устойчивые сведения в базе данных SQL Server, а неустойчивые сведения о состоянии — в памяти. В состав .NET Framework version 4 входит хранилище экземпляров рабочих процессов SQL, представляющее собой конкретную реализацию хранилища экземпляров, позволяющего рабочим процессам материализовывать данные и метаданные экземпляров в базах данных SQL Server 2005 и SQL Server 2008. Дополнительные сведения см. в статье Хранилища экземпляров (http://go.microsoft.com/fwlink/?LinkId=181533) в справке платформы .NET Framework. AppFabric поддерживает материализацию экземпляров служб рабочих процессов только в базах данных SQL Server 2008.

Для использования хранилища экземпляров с инструментарием AppFabric (командлетами Windows PowerShell и расширениями для диспетчера IIS) и службой управления рабочими процессами следует разработать для хранилища экземпляров поставщик хранилища экземпляров, поставщик запросов экземпляров, а также поставщик управления экземплярами. В следующих разделах описаны все три типа поставщиков.

Примечание

API поставщика запросов экземпляров и поставщика управления экземплярами основан на .NET Framework 2.0, а API поставщика хранилища экземпляров основан на .NET Framework version 4

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

Поставщик хранилища экземпляров предоставляет API, к которому клиенты обращаются для создания объектов хранилища экземпляров. Клиенты используют объекты хранилища экземпляров для сохранения экземпляров рабочих процессов в базовом хранилище экземпляров (например, в базе данных SQL Server) или для загрузки экземпляров из хранилища.

В AppFabric имеется поставщик хранилища экземпляров для хранилища экземпляров рабочих процессов SQL. Для поддержки другого хранилища экземпляров следует создать для него поставщик хранилища экземпляров. Чтобы создать поставщик хранилища экземпляров, следует создать класс, производный от класса InstanceStoreProvider, и реализовать методы создания хранилища экземпляров, аналогичные SqlWorkflowInstanceStore. Дополнительные сведения см. в разделе Инструкция по разработке поставщика хранилища экземпляров.

Поставщики запросов экземпляров

Поставщик запросов экземпляров позволяет выполнять запросы к хранилищу экземпляров. При использовании таких командлетов, как Get-ASAppServiceInstance, для запроса экземпляров в хранилище командлет создает объект поставщика запросов и вызывает его методы. Объект поставщика запросов создает запросы к хранилищу экземпляров и выполняет их, возвращая результаты командлету. В большинстве случаев разрешения AppFabric для диспетчера IIS используют командлеты для запросов к хранилищам экземпляров. Поэтому они также зависят от хранилищ экземпляров.

Все поставщики запросов реализуют одинаковый API и предоставляют уровень абстракции над базовыми хранилищами экземпляров, которые могут различаться. В состав AppFabric входит поставщик запросов экземпляров для хранилища экземпляров рабочих процессов SQL, позволяющий запрашивать экземпляры, хранящиеся в базе данных сохраняемости SQL Server. Когда поставщик запросов SQL получает запрос от клиента (например, командлета Windows PowerShell), он запрашивает и извлекает данные экземпляров из базы данных SQL Server, возвращая результирующий набор клиенту. Реализация поставщика запросов экземпляров для хранилища экземпляров рабочих процессов SQL находится в библиотеке Microsoft.ApplicationServer.StoreManagement.dll.

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

Поставщики управления экземплярами

Поставщик управления экземплярами позволяет клиенту использовать команды управления экземплярами в хранилище данных и извлекать команды, которые необходимо выполнить над экземпляром. При использовании командлетов Windows PowerShell в AppFabric для управления (приостановки, возобновления и так далее) экземплярами в хранилище экземпляров командлет создает объект поставщика управления экземплярами и вызывает метод объекта, добавляющий команду в очередь команд. Поставщик управления экземплярами хранит очередь команд в хранилище экземпляров. Универсальное основное приложение, например служба управления рабочими процессами (WMS), создает объект поставщика управления и вызывает его метод, чтобы извлечь команду, хранящуюся в очереди команд, и выполнить ее. Служба управления рабочими процессами уведомляет поставщик управления экземплярами об успехе или неудаче при выполнении. Если выполнение прошло успешно, поставщик управления удаляет команду из очереди; в противном случае служба управления рабочими процессами уведомляет поставщик управления о сбое, чтобы он предпринял необходимые действия.

Помимо перенаправления команды из очереди команд в службу управления рабочими процессами, поставщик управления экземплярами также перенаправляет контейнер свойств с метаданными экземпляра, применительно к которому была выдана команда. Контейнер свойств содержит имя сайта и путь виртуальной службы экземпляра. Поставщик управления получает эти метаданные из хранилища экземпляров. Служба управления рабочими процессами использует эти метаданные для получения доступа к конечной точке управления экземпляра (ICE), предоставляемой экземпляром службы, и вызывает необходимые методы этой точки.

Все поставщики запросов реализуют одинаковый API и предоставляют уровень абстракции над базовыми хранилищами экземпляров, которые могут различаться. В состав AppFabric входит поставщик управления экземплярами для хранилища экземпляров рабочих процессов SQL, позволяющий выдавать команды управления для экземпляров, хранящихся в базе данных сохраняемости SQL Server. Реализация поставщика управления экземплярами для хранилища экземпляров рабочих процессов SQL находится в библиотеке Microsoft.ApplicationServer.StoreManagement.dll. Для поддержки выдачи команд применительно к экземплярам, хранящимся в других типах хранилищ сохраняемости, следует разработать соответствующий поставщик управления экземплярами.

Для создания пользовательского поставщика управления экземплярами следует создать класс, производный от класса InstanceControlProvider, и реализовать методы для добавления и извлечения команд в очереди от лица клиентов. Дополнительные сведения см. в разделе Инструкция по разработке поставщика управления экземплярами.

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

В AppFabric имеется поставщик управления экземплярами для хранилища экземпляров рабочих процессов SQL. Поставщик управления экземплярами хранит очередь команд в базе данных SQL. При выполнении командлета управления над хранилищем экземпляров рабочих процессов SQL поставщик управления экземплярами получает запрос и сохраняет сведения о команде в очереди команд в базе данных SQL. Служба управления рабочими процессами использует поставщик управления экземплярами для извлечения команды из очереди, выполняет команду над хранилищем экземпляров рабочих процессов SQL и удаляет команду из очереди, если выполнение прошло успешно. Реализация поставщика управления экземплярами для хранилища экземпляров рабочих процессов SQL находится в библиотеке Microsoft.ApplicationServer.StoreManagement.dll.

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

  • Он мгновенно (синхронно) обрабатывает команду удаления. Все прочие команды добавляются в очередь команд перед тем, как поставщик передаст их на обработку службе управления рабочими процессами.

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

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

  • После считывания команды из очереди поставщик управления ставит временную блокировку. Блокировка снимается через 65 секунд. После получения уведомления об успешном выполнении команды от службы управления рабочими процессами поставщик удаляет команду из очереди команд.

  • Поставщик управления повторяет попытку выполнения команды пять раз, если ее выполнение завершается сбоем. В очереди команд имеется счетчик неудачных попыток выполнения. Если выполнение команды завершается сбоем в пятый раз, то поставщик удаляет ее из очереди.

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

    Существующая в журнале запись для экземпляра удаляется, если в очередь ставится новая команда для этого экземпляра или пользователь удаляет экземпляр из хранилища экземпляров. Пользователь может удалить экземпляр с помощью командлета (например, Remove-ASAppServiceInstance).

  • Поставщик управления извлекает команды из очереди пакетами по 10 команд.

См. также

Основные понятия

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

  2011-12-05