Варианты размещения рабочего процесса
Большинство примеров Windows Workflow Foundation (WF) используют рабочие процессы, размещенные в консольном приложении, но это не реалистичный сценарий для реальных рабочих процессов. Рабочие процессы в фактических бизнес-приложениях будут размещаться в постоянных процессах — службе Windows, созданной разработчиком, или серверным приложением, таким как IIS 7.0 или AppFabric. Между этими подходами имеются следующие различия.
Размещение рабочих процессов в службах IIS с Windows AppFabric
IIS с AppFabric является предпочитаемым расположением для рабочих процессов. Ведущее приложение для рабочих процессов с помощью AppFabric - служба активации Windows, которая устраняет зависимость от HTTP только по IIS.
Размещение рабочих процессов только в службах IIS
Использование служб IIS 7.0 только не рекомендуется, так как существуют средства управления и мониторинга, доступные в AppFabric, которые упрощают обслуживание запущенных приложений. Рабочие процессы должны размещаться только в IIS 7.0 только в случае проблем с инфраструктурой при переходе в AppFabric.
Предупреждение
IIS 7.0 периодически перезапускает пулы приложений по различным причинам. При перезапуске пула приложений IIS прекращает прием сообщений старым пулом и создает новый пул приложений, чтобы принимать новые запросы. Если рабочий процесс продолжает работать после отправки ответа, служба IIS 7.0 не будет знать о выполняемой работе и может перезапустить пул приложений размещения. В этом случае рабочий процесс завершит работу, и службы отслеживания записывают сообщение 1004 — WorkflowInstanceAborted с пустым полем "Причина".
Если используется сохраняемость, узел должен явно перезапустить прерванные экземпляры с последней точки сохраняемости.
Если используется AppFabric и сохраняемость, служба управления рабочими процессами в конечном счете возобновит рабочий процесс с последней успешной точки сохраняемости. Если сохраняемость не используется и рабочий процесс выполняет операции вне шаблона «запрос-ответ», то данные будут потеряны при отмене рабочего процесса.
Размещение рабочего процесса в пользовательской службе Windows
Создание пользовательской службы рабочего процесса для его размещения потребует от разработчика дублирования многих функциональных возможностей, предоставляемых готовым AppFabric, однако обеспечит большую гибкость за счет дополнительных функций. Этот вариант следует рассматривать, только если AppFabric не является дополнительным средством.