Функция автозапуска
Компонент автозапуск в AppFabric основан на компоненте автозапуск служб IIS 7.5, входящих в состав систем Windows 7 и Windows Server 2008 R2. В IIS можно настроить автозапуск для пула приложений или некоторых приложений в нем при запуске службы IIS. Функция автозапуска в AppFabric расширяет эту функциональность, позволяя настраивать автозапуск всех или некоторых служб при запуске приложения.
Преимущества функции автозапуска
При включении для службы функции автозапуск служба будет начинать работу вместе с приложением, к которому она принадлежит, еще до поступления первых сообщений WCF от клиентов. Соответственно, служба обрабатывает первое сообщение без задержки, так как она уже инициализирована. Например, предположим, что службе необходимо подключиться к базе данных, чтобы считать несколько сотен строк для заполнения структуры данных кэширования Платформа .NET Framework при ее первом создании. Начальная обработка занимает длительное время, поэтому служба не сможет начать работу сразу. При использовании автозапуск в этом случае служба инициализируется до первого вызова.
Компонент HTTP.SYS в IIS обрабатывает HTTP-запросы, а Служба активации Windows (WAS) обрабатывает запросы, сделанные с помощью TCP, именованных каналов и MSMQ, используя настраиваемые адаптеры прослушивателей WCF, входящие в состав IIS. Адаптер прослушивателя устанавливает связь между WAS и службой, использующей протоколы, отличные от HTTP. Для поддержки обработки сообщений, получаемым по другим протоколам, следует разработать пользовательские адаптеры прослушивателей и другие вспомогательные модули, что может быть непросто. Дополнительные сведения об адаптерах прослушивателей см. в статье Адаптеры прослушивателей (https://go.microsoft.com/fwlink/?LinkId=160359). При наличии поддержки автозапуск в IIS можно развертывать приложения, которые поддерживают любой протокол. При включении автозапуск для этих приложений WAS активирует их и поддерживает их активность в рабочем процессе.
Сценарии автозапуска
Службы, использующие функцию автозапуска, поддерживают следующие сценарии.
Компьютер, на котором развернуто приложение, перезагружается. Для IIS, WAS, пула приложений, приложения и служб настроен автозапуск вместе с компьютером. Службы автоматически запускаются в этом сценарии при перезапуске приложения. Если в приложении настроен автозапуск всех служб, то автоматически запускаются все службы в приложении; в противном случае запускаются только службы, указанные в файле Web.config.
Для некоторых протоколов, например протокола извещения WS-Discovery, приложения должны быть всегда доступны. При включении автозапуска для приложения и служб в нем компонент автозапуска Microsoft AppFabric 1.1 для Windows Server автоматически запускает службы при запуске содержащего их приложения.
Пул приложений, к которому принадлежит служба, обнаруживает, что за определенный период времени слишком многие рабочие процессы стали неработоспособными, и инициирует процесс защиты от частых сбоев. Функция автозапуска поддерживает защиту от частых сбоев; если число сбоев процесса за определенный период превысит заданное число, то приложение и его службы не будут перезапускаться после превышения порога защиты от частых сбоев.
Сценарий перезапуска компьютера
В следующем списке перечислены обычные этапы в ситуации перезапуска компьютера, поддерживаемого функцией автозапуска.
Служба активации Windows (WAS) запускается, если для нее настроен автозапуск. Настроить WAS можно с помощью оснастки "Службы" в области "Администрирование".
WAS запускает все пулы приложений, для которых настроен автозапуск. Параметр startMode в файле ApplicationHost.config у таких приложений имеет значение AlwaysRunning.
<applicationPools> <add name=”MyAppPool” startMode=”AlwaysRunning” /> </applicationPools>
Диспетчер приложений в составе WAS загружает все приложения, для которых настроен автозапуск. У таких приложений в файле ApplicationHost.config для атрибута serviceAutoStartEnabled задано значение true.
<sites> <site name="MySite" id="1"> <application path="/" serviceAutoStartEnabled=”true” serviceAutoStartProvider=”Service” serviceAutoStartMode=”All/Custom”> <virtualDirectory path="/" physicalPath="C:\MySite" /> </application> </site> </sites>
Процесс инициализации приложения вызывает модуль автозапуска, который запускает службы, настроенные для автоматического запуска.
Атрибут serviceAutoStartProvider — это точка расширяемости IIS, которую можно использовать для запуска настраиваемых объектов. Программа установки Microsoft AppFabric 1.1 для Windows Server устанавливает поставщик служб и расширяет схему IIS, добавляя атрибут serviceAutoStartMode.
Если для атрибута serviceAutoStartMode приложения задается значение All, будут запускаться все службы в приложении. Если для атрибута serviceAutoStartMode приложения задается значение Custom, будут запускаться только службы, указанные в файле Web.config.
Модуль автозапуска использует значение параметра relativeVirtualPath для загрузки служб. Следующий фрагмент конфигурации взят из файла Web.config, где настроены параметры relativeVirtualPath для двух служб. Параметр relativeVirtualPath службы — это путь к службе, заданный относительно приложения, содержащего эту службу.
// a sample Web.config fragment with two services configured to use the auto-start feature. <Microsoft.ProcessServer.Hosting> <serviceAutoStart> <add relativeVirtualPath =”/Calendar/Appointments.xamlx” > <add relativeVirtualPath =”/BookStore/ShoppingCart.svc” > </serviceAutoStart> </Microsoft.ProcessServer.Hosting>
Совет
Параметры автозапуска для служб хранятся в файле Web.config, а параметры автозапуска для пулов приложений и отдельных приложений хранятся в файле ApplicationHost.config.
Настройка автозапуска
Для настройки функции AppFabric для служб автозапуск и WCF можно использовать расширения диспетчера IIS или командлеты, предоставляемые WF. Подробные пошаговые инструкции по настройке компонента автозапуск см. в подразделах Настройка автозапуска с помощью диспетчера IIS и Настройка автозапуска с помощью командлетов AppFabric раздела Настройка автозапуска.
Примечание
Если для службы включена функция автозапуск, IIS игнорирует параметр Время ожидания простоя у пула приложений и приложения в нем. Рабочий процесс, связанный с пулом приложений, остается в памяти даже тогда, когда время бездействия пула превысило значение Время ожидания простоя.
Предупреждение
Если код инициализации службы написан неэффективно и его выполнение занимает длительное время, то период запуска IIS может превысить время ожидания и процесс завершится в текущем состоянии. Рекомендуется использовать в коде инициализации службы несколько потоков, если она работает на компьютерах с несколькими процессорами.
См. также
Основные понятия
2012-03-05