Freigeben über


Workflowpersistenz

Dieses Thema gilt für Windows Workflow Foundation 4.

Workflowpersistenz bezeichnet die permanente Erfassung des Zustands einer Workflowinstanz unabhängig von Prozess- oder Computerinformationen. Sie wird durchgeführt, um einen bekannten Wiederherstellungspunkt für die Workflowinstanz im Fall eines Systemfehlers bereitzustellen oder um Arbeitsspeicher beizubehalten, indem Workflowinstanzen entladen werden, die gerade nicht aktiv sind, bzw. um den Zustand der Workflowinstanz von einem Knoten zu einem anderen Knoten in einer Serverfarm zu verschieben.

Die Persistenz aktiviert die Flexibilität, Skalierbarkeit und Wiederherstellung von Prozessen bei einem Fehler und bietet die Möglichkeit, den Arbeitsspeicher effizienter zu verwalten. Der Persistenzvorgang umfasst die Identifikation eines Persistenzpunkts, das Sammeln der zu speichernden Daten und schließlich die Delegierung des tatsächlichen Speichers der Daten an einen Persistenzanbieter.

Um die Persistenz für einen Workflow zu aktivieren, müssen Sie der WorkflowApplication oder dem WorkflowServiceHost einen Instanzspeicher zuordnen, wie in Vorgehensweise: Aktivieren der Persistenz für Workflows und Workflowdienste beschrieben. Die WorkflowApplication und der WorkflowServiceHost verwenden den Instanzspeicher, der Ihnen zugeordnet wurde, um das Speichern von Workflowinstanzen in einen persistenten Speicher und das Laden von Workflowinstanzen in den Arbeitsspeicher auf Grundlage der im persistenten Speicher gespeicherten Workflowinstanzdaten zu aktivieren.

.NET Framework, Version 4 enthält die SqlWorkflowInstanceStore-Klasse, die die Persistenz von Daten und Metadaten zu Workflowinstanzen in eine Datenbank von SQL Server 2005 oder SQL Server 2008 zulässt. Weitere Informationen finden Sie unter SQL-Workflowinstanzspeicher.

Zum Speichern und Laden Ihrer anwendungsspezifischen Daten zusammen mit den Informationen zur Workflowinstanz können Sie Persistenzteilnehmer erstellen, die die PersistenceParticipant-Klasse erweitern. Ein Persistenzteilnehmer nimmt am Persistenzvorgang teil, um benutzerdefinierte serialisierbare Daten in den persistenten Speicher zu speichern, die Daten aus dem Instanzspeicher in den Arbeitsspeicher zu laden und ggf. die zusätzliche Logik einer Persistenztransaktion auszuführen. Weitere Informationen finden Sie unter Persistenzteilnehmer.

Implizite Persistenzpunkte

Die folgende Liste enthält Beispiele der Bedingungen, zu denen ein Workflow beibehalten wird, wenn ein Instanzspeicher einem Workflow zugeordnet ist.

  • Wenn eine TransactionScope-Aktivität oder eine TransactedReceiveScope-Aktivität abgeschlossen wird.

  • Wenn eine Workflowinstanz in den Leerlauf wechselt und das WorkflowIdleBehavior auf den Workflowhost festgelegt ist. Dies ist z. B. der Fall, wenn Sie Messagingaktivitäten oder eine Delay-Aktivität verwenden.

  • Wenn eine Workflowanwendung in den Leerlauf wechselt und die PersistableIdle-Eigenschaft der Anwendung auf PersistableIdleAction.Persist festgelegt ist.

  • Wenn eine Hostanwendung angewiesen ist, eine Workflowinstanz beizubehalten oder zu entladen.

  • Wenn eine Workflowinstanz beendet oder fertig gestellt wird.

  • Wenn eine Persist-Aktivität ausgeführt wird.

  • Wenn eine Instanz eines Workflows, die mit einer früheren Version von Windows Workflow Foundation entwickelt wurde, während einer interoperablen Ausführung auf einen Persistenzpunkt trifft.

In diesem Abschnitt