Размещение веб-узлов в приложении, использующем очереди

Служба активации процессов Windows (WAS) управляет активацией и временем существования рабочих процессов, содержащих приложения, в которых размещаются службы Windows Communication Foundation (WCF). Модель процесса WAS обобщает модель процесса IIS 6.0 для HTTP-сервера, удалив зависимость от HTTP. Это позволяет службам WCF использовать протоколы HTTP и не HTTP, такие как net.msmq и msmq.formatname, в среде размещения, которая поддерживает активацию на основе сообщений и предоставляет возможность размещать большое количество приложений на определенном компьютере.

WAS содержит службу активации очереди сообщений (MSMQ), которая активирует приложение с использованием очередей, где одно или более сообщений ставятся в очередь сообщений MSMQ, одну из очередей, используемых приложением. Служба активации MSMQ является службой NT, запускающейся по умолчанию автоматически.

Дополнительные сведения о WAS и его преимуществах см. в разделе "Размещение в службе активации процесса Windows". Дополнительные сведения о MSMQ см. в разделе "Общие сведения о очередях".

Адресация очереди в WAS

Приложения WAS имеют адреса в виде универсальных кодов ресурсов (URI). Адреса приложений состоят из двух частей: основной префикс URI и относительный адрес, специальный для каждого приложения (путь). Вместе эти две части показывают внешний адрес приложения. Префикс базового URI создается из привязки сайта и используется для всех приложений на сайте, например net.msmq://localhost, msmq.formatname://localhost или net.tcp://localhost. Затем адреса приложений создаются путем получения фрагментов пути для конкретного приложения (например, "/applicationOne") и добавления их в базовый префикс URI, чтобы получить полный URI приложения, например "net.msmq://localhost/applicationOne".

Служба активации MSMQ использует URI приложения для проверки соответствия с очередью, сообщения которой служба активации MSMQ должна контролировать. При запуске служба активации MSMQ перечисляет все общие и частные очереди на компьютере, с которого она их получает согласно настройкам конфигурации, и отслеживает наличие в них сообщений. Служба активации MSMQ обновляет список очередей для проверки каждые 10 минут. Если в очереди найдено сообщение, служба активации проверяет соответствие имени очереди и самого длинного согласующегося URI для привязки net.msmq и активирует приложение.

Примечание.

Активируемое приложение должно соответствовать (иметь самый длинный согласующийся код) префиксу имени очереди.

Например, имя очереди: msmqWebHost/orderProcessing/service.svc. Если приложение 1 имеет виртуальный каталог /msmqWebHost/orderProcessing с файлом service.svc в нем, а приложение 2 имеет виртуальный каталог /msmqWebHost с orderProcessing.svc в нем, активируется приложение 1. Если приложение 1 удалено, активируется приложение 2.

Примечание.

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

Влияние общих и частных очередей на адресацию

Служба активизации MSMQ не делает различий между мониторингом частных и общих очередей. В принципе, общая и частная очереди не могут иметь одинаковых имен. Но, если это так, приложение, размещенное на веб-сервере, может быть активировано чтением сообщения из любой из очередей.

Конфигурация очереди для активации

Служба активации MSMQ работает как NETWORK SERVICE. Это служба, осуществляющая мониторинг очередей для активации приложений. Для того, чтобы служба активировала приложения из очереди, очередь должна быть доступна NETWORK SERVICE для просмотра сообщений в списке управления доступом (ACL).

Подозрительные сообщения

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

Вложенная очередь и недостаток системных очередей

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

См. также