工作流持久性是工作流实例状态的持久捕获,独立于进程或计算机信息。 这样做是为了在发生系统故障时为工作流实例提供一个已知的恢复点,或者通过卸载未主动执行工作的工作流实例或将工作流实例的状态从一个节点移到服务器场中的另一个节点来保留内存。
持久性支持进程敏捷性、可伸缩性、面对故障的恢复,以及更高效地管理内存的能力。 持久性过程包括持久性点的标识、要保存的数据的收集,最后是将数据的实际存储委托给持久性提供程序。
若要为工作流启用持久性,需要将实例存储与 WorkflowApplication 或 WorkflowServiceHost 相关联,如 作方法:为工作流和工作流服务启用持久性。 WorkflowApplication 和 WorkflowServiceHost 使用与其关联的实例存储来启用将工作流实例保存到持久性存储中,并根据存储在持久性存储中的工作流实例数据将工作流实例加载到内存中。
.NET Framework 4.6.1 附带 SqlWorkflowInstanceStore 类,该类允许将有关工作流实例的数据和元数据暂留到 SQL Server 2005 或 SQL Server 2008 数据库中。 有关更多详细信息,请参阅 SQL 工作流实例存储 。
若要存储和加载应用程序特定数据以及与工作流实例相关的信息,您可以创建用于扩展 PersistenceParticipant 类的持久性参与者。 持久性参与者参与持久性过程,将自定义可序列化数据保存到持久性存储中,将数据从实例存储加载到内存中,并在持久性事务下执行任何其他逻辑。 有关详细信息,请参阅持久性参与者。
Windows Server App Fabric 简化了配置持久性的过程。 有关详细信息,请参阅 Windows Server App Fabric 的持久性概念
隐式持久性点
以下列表包含当实例存储与工作流关联时,工作流持久化的条件示例。
当 TransactionScope 活动完成时或 TransactedReceiveScope 活动完成时。
当工作流实例变为空闲状态,且对工作流主机设置了 WorkflowIdleBehavior 时。 例如,使用消息传递活动或 延迟 活动时,会出现这种情况。
当 WorkflowApplication 变为空闲状态并且应用程序的 PersistableIdle 属性设置为 PersistableIdleAction.Persist 时。
当指示主机应用程序持久保存或卸载工作流实例时。
工作流实例终止或完成时。
当执行 Persist 活动时。
当使用 Windows Workflow Foundation 的早期版本开发的工作流实例在可互操作执行过程中遇到持久点时。