Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WorkflowServiceHost предоставляет хост для служб рабочих процессов. Он отвечает за прием входящих сообщений и их маршрутизацию в соответствующий экземпляр службы рабочих процессов, управляет выгрузкой и сохранением бездействующих рабочих процессов, и выполняет другие функции. В этом разделе описывается, как WorkflowServiceHost обрабатывает входящие сообщения.
Обзор WorkflowServiceHost
Класс WorkflowServiceHost используется для размещения служб рабочих процессов. Он прослушивает входящие сообщения и направляет их в соответствующий экземпляр службы, создавая новые экземпляры или загружая существующие экземпляры из устойчивого хранилища по мере необходимости. На следующей диаграмме иллюстрируется, в общих чертах, как работает WorkflowServiceHost.
На этой схеме показано, что WorkflowServiceHost загружает определения службы рабочих процессов из xamlx-файлов и загружает сведения о конфигурации из файла конфигурации. Она также загружает конфигурацию отслеживания из профиля отслеживания. WorkflowServiceHost предоставляет конечную точку управления рабочим процессом, которая позволяет отправлять операции управления в экземпляры рабочих процессов. Дополнительные сведения см. в примере конечной точки управления рабочими процессами.
WorkflowServiceHost также предоставляет конечные точки приложения, которые принимают входящие сообщения приложения. При поступлении входящего сообщения он отправляется в соответствующий экземпляр службы рабочих процессов (если он загружен в данный момент). При необходимости создается новый экземпляр рабочего процесса. Или если существующий экземпляр сохранен, он загружается из хранилища сохраняемости.
Сведения о WorkflowServiceHost
На следующей схеме показано, как WorkflowServiceHost обрабатываются сообщения более подробно.
На этой схеме показаны три разные конечные точки, конечная точка приложения, конечная точка управления рабочим процессом и конечная точка размещения рабочего процесса. Конечная точка приложения получает сообщения, привязанные к конкретному экземпляру рабочего процесса. Конечная точка управления рабочим процессом прослушивает операции управления. Конечная точка размещения рабочего процесса прослушивает сообщения, которые инициируют загрузку и выполнение несервисных рабочих процессов. Как показано на схеме, все сообщения обрабатываются через среду выполнения WCF. Регулирование интенсивности экземпляра службы рабочего процесса осуществляется с помощью свойства MaxConcurrentInstances. Это свойство ограничивает количество одновременных экземпляров службы рабочих процессов. Если это ограничение превышено, любые дополнительные запросы на создание новых экземпляров службы рабочих процессов или запросы на активацию сохраненных экземпляров рабочих процессов будут помещены в очередь. Запросы в очереди обрабатываются в порядке FIFO независимо от того, являются ли они запросами на новый экземпляр или на работающий, сохраненный экземпляр. Информация о политике хоста загружается, определяя, как обрабатываются необработанные исключения и как неактивные службы рабочих процессов выгружаются и сохраняются. Дополнительные сведения об этих темах см. в "How to: Configure Workflow Unhandled Exception Behavior with WorkflowServiceHost" и "How to: Configure Idle Behavior with WorkflowServiceHost". Экземпляры рабочих процессов сохраняются в соответствии с политиками хоста и загружаются при необходимости. Дополнительные сведения о сохраняемости рабочих процессов см. в статье "Практическое руководство. Настройка сохраняемости с помощью WorkflowServiceHost", создание длительно работающей службы рабочих процессов и сохраняемость рабочих процессов.
На следующем рисунке показан поток при вызове WorkflowServiceHost.Open:
Рабочий процесс загружается из XAML и создается дерево действий. WorkflowServiceHost выполняет обход дерева действий и создает описание сервиса. Конфигурация применяется к хосту. Наконец, хост начинает прослушивать входящие сообщения.
На следующем рисунке показано, что WorkflowServiceHost делает при получении сообщения, привязанного к действию Получения, для которому задано значение true
CanCreateInstance:
Сообщение поступает и обрабатывается стеком каналов WCF. Проверяются дроссели и выполняются запросы корреляции. Если сообщение привязано к существующему экземпляру, сообщение доставляется. Если необходимо создать новый экземпляр, проверяется свойство действия Receive CanCreateInstance. Если задано значение true, создается новый экземпляр и отправляется сообщение.
На следующем рисунке показано, что WorkflowServiceHost делает при получении сообщения, связанного с операцией получения, где CanCreateInstance имеет значение false.
Сообщение поступает и обрабатывается стеком каналов WCF. Проверяются дроссели и выполняются запросы корреляции. Сообщение привязано к существующему экземпляру (так как CanCreateInstance имеет значение false), поэтому экземпляр загружается из хранилища сохраняемости, закладка возобновляется и рабочий процесс выполняется.
Предупреждение
Хост службы рабочих процессов не удастся открыть, если SQL Server настроен только для прослушивания протокола NamedPipe.
См. также
- Службы рабочих процессов
- Размещение служб рабочих процессов
- Конечная точка управления рабочим процессом
- Практическое руководство. Настройка необработанного поведения исключений рабочего процесса с помощью WorkflowServiceHost
- Создание службы долгосрочного рабочего процесса
- Сохраняемость рабочих процессов