Share via


Persistenza del flusso di lavoro

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

La persistenza del flusso di lavoro è l'acquisizione durevole di uno stato di un'istanza del flusso di lavoro, indipendentemente dalle informazioni relative al processo o al computer. In questo modo viene fornito un punto noto di ripristino dell'istanza del flusso di lavoro in caso di errore di sistema o viene conservata memoria scaricando istanze del flusso di lavoro il cui funzionamento non viene eseguito in modo attivo o ancora viene spostato lo stato dell'istanza del flusso di lavoro da un nodo a un altro in una server farm.

La persistenza abilita agilità di processo, scalabilità, ripristino nonostante errori e la possibilità di gestire la memoria in modo più efficiente. Il processo di persistenza include l'identificazione di un punto di persistenza, la raccolta dei dati da salvare e infine la delega dell'archiviazione effettiva dei dati a un provider di persistenza.

Per abilitare la persistenza di un flusso di lavoro, è necessario associare un archivio di istanze all'oggetto WorkflowApplication o all'oggetto WorkflowServiceHost come menzionato in Procedura: abilitare la persistenza per i flussi di lavoro e i relativi servizi. Gli oggetti WorkflowApplication e WorkflowServiceHost utilizzano il relativo archivio di istanze associato per abilitare la persistenza delle istanze del flusso di lavoro in un archivio di persistenza e il carico delle istanze del flusso di lavoro in memoria in base ai dati dell'istanza del flusso di lavoro archiviati nell'archivio di persistenza.

In .NET Framework versione 4 è disponibile la classe SqlWorkflowInstanceStore che consente la persistenza di dati e metadati relativamente alle istanze del flusso di lavoro in un database di SQL Server 2005 o di SQL Server 2008. Per ulteriori informazioni, vedere Archivio di istanze del flusso di lavoro SQL.

Per archiviare e caricare i dati specifici dell'applicazione insieme alle informazioni correlate all'istanza del flusso di lavoro, è possibile creare partecipanti di persistenza che estendono la classe PersistenceParticipant. Un partecipante di persistenza fa parte del processo di persistenza per salvare dati serializzabili personalizzati nell'archivio di persistenza, per caricare i dati dall'archivio di istanze in memoria ed eseguire qualsiasi logica aggiuntiva in una transazione di persistenza. Per ulteriori informazioni, vedere Partecipanti di persistenza.

Punti di persistenza impliciti

Nell'elenco seguente sono contenuti esempi di condizioni in base alle quali un flusso di lavoro viene reso persistente quando un archivio di istanze è associato a un flusso di lavoro.

  • Quando un'attività TransactionScope o un'attività TransactedReceiveScope viene completata.

  • Quando un'istanza del flusso di lavoro diventa inattiva e WorkflowIdleBehavior viene impostato sull'host del flusso di lavoro. Questa situazione si verifica, ad esempio, quando si utilizzano attività di messaggistica o un'attività Delay.

  • Quando WorkflowApplication diventa inattivo e la proprietà PersistableIdle dell'applicazione viene impostata su PersistableIdleAction.Persist.

  • Quando a un'applicazione host viene richiesto di rendere persistente o scaricare un'istanza del flusso di lavoro.

  • Quando un'istanza del flusso di lavoro viene terminata o finisce.

  • Quando viene eseguita un'attività Persist.

  • Quando un'istanza di un flusso di lavoro sviluppata utilizzando una versione precedente di Windows Workflow Foundation incontra un punto di persistenza durante l'esecuzione interoperativa.

In questa sezione