Freigeben über


Workflow-Persistenz

Workflowpersistenz ist die dauerhafte Erfassung des Zustands einer Workflowinstanz, unabhängig von Prozess- oder Computerinformationen. Dies geschieht, um einen bekannten Wiederherstellungspunkt für die Workflowinstanz im Falle eines Systemausfalls bereitzustellen oder Arbeitsspeicher zu erhalten, indem Workflowinstanzen entladen werden, die nicht aktiv arbeiten, oder um den Status der Workflowinstanz von einem Knoten in einen anderen Knoten in einer Serverfarm zu verschieben.

Persistenz ermöglicht Prozessflexibilität, Skalierbarkeit, Wiederherstellung angesichts des Ausfalls und der Fähigkeit, den Speicher effizienter zu verwalten. Der Persistenzprozess umfasst die Identifizierung eines Persistenzpunkts, die Erfassung der zu speichernden Daten und schließlich die Delegierung der tatsächlichen Speicherung der Daten an einen Persistenzanbieter.

Um die Persistenz für einen Workflow zu aktivieren, müssen Sie einen Instanzspeicher dem WorkflowApplication oder WorkflowServiceHost zuordnen, wie in " How to: Enable Persistence for Workflows and Workflow Services" erwähnt. Die WorkflowApplication und WorkflowServiceHost verwenden den ihnen zugeordneten Instanzspeicher, um persistierende Workflowinstanzen in einen Persistenzspeicher zu ermöglichen und Workflowinstanzen basierend auf den im Persistenzspeicher gespeicherten Workflowinstanzdaten in den Arbeitsspeicher zu laden.

Das .NET Framework 4.6.1 wird mit der SqlWorkflowInstanceStore-Klasse ausgeliefert, die die Persistenz von Daten und Metadaten zu Workflowinstanzen in einer SQL Server 2005- oder SQL Server 2008-Datenbank ermöglicht. Weitere Informationen finden Sie im SQL-Workflow-Instanzspeicher.

Um Ihre anwendungsspezifischen Daten zusammen mit den Workflowinstanzinformationen zu speichern und zu laden, können Sie Persistenzteilnehmer erstellen, die die PersistenceParticipant Klasse erweitern. Ein Persistenzteilnehmer nimmt am Persistenzprozess teil, um benutzerdefinierte serialisierbare Daten im Persistenzspeicher zu speichern, die Daten aus dem Instanzspeicher in den Speicher zu laden und eine zusätzliche Logik unter einer Persistenztransaktion auszuführen. Weitere Informationen finden Sie unter Persistence Participants.

Windows Server App Fabric vereinfacht den Prozess der Konfiguration der Persistenz. Weitere Informationen finden Sie unter Persistenzkonzepte mit Windows Server App Fabric

Implizite Persistenzpunkte

Die folgende Liste enthält Beispiele für die Bedingungen, unter denen ein Workflow beibehalten wird, wenn ein Instanzspeicher einem Workflow zugeordnet ist.

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

  • Wenn eine Workflowinstanz in den Leerlauf wechselt und das WorkflowIdleBehavior für den Workflowhost festgelegt ist. Dies tritt beispielsweise auf, wenn Sie Messagingaktivitäten oder eine Verzögerungsaktivität verwenden.

  • Wenn eine WorkflowApplication im Leerlauf ist und die PersistableIdle-Eigenschaft der Anwendung auf PersistableIdleAction.Persist festgelegt ist.

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

  • Wenn eine Workflowinstanz beendet oder abgeschlossen 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 der interoperablen Ausführung auf einen Persistenzpunkt stößt.

In diesem Abschnitt