Поделиться через


Сохраняемость рабочего процесса

Данный раздел относится к версии Windows Workflow Foundation 4.

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

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

Чтобы включить сохраняемость для рабочего процесса, необходимо связать хранилище экземпляров с WorkflowApplication или WorkflowServiceHost, как описано в разделе Как включить сохраняемость для рабочих процессов и служб рабочих процессов. WorkflowApplication и WorkflowServiceHost используют связанное с ними хранилище экземпляров для обеспечения сохранения экземпляров рабочего процесса в хранилище сохраняемости и загрузки экземпляров рабочего процесса в память на основе данных экземпляра рабочего процесса из хранилища сохраняемости.

.NET Framework, версия 4 поставляется с классом SqlWorkflowInstanceStore, который обеспечивает сохраняемость данных и метаданных, относящихся к экземплярам рабочего процесса, в базе данных SQL Server 2005 или SQL Server 2008. Дополнительные сведения см. в разделе Хранилище экземпляров рабочих процессов SQL.

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

Неявные точки сохранения

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

  • Когда завершается действие TransactionScope или завершается действие TransactedReceiveScope.

  • Когда экземпляр рабочего процесса переходит в состояние бездействия и узлу рабочего процесса задано поведение WorkflowIdleBehavior. Например, это происходит при использовании действий обмена сообщениями или действия Delay.

  • Когда приложение WorkflowApplicatione переходит в состояние бездействия, и свойству PersistableIdle приложения задается значение PersistableIdleAction.Persist.

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

  • При прерывании или завершении экземпляра рабочего процесса.

  • При выполнении действия Persist.

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

В этом разделе