Persistenza del flusso di lavoro

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 per un flusso di lavoro, è necessario associare un archivio di istanze a WorkflowApplication o WorkflowServiceHost, come indicato in Procedura: abilitare la persistenza per i flussi di lavoro e i relativi servizi. WorkflowApplication e WorkflowServiceHost usano il relativo archivio di istanze associato per abilitare la persistenza delle istanze del flusso di lavoro in un archivio di persistenza e il caricamento 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 4.6.1 è disponibile la classe SqlWorkflowInstanceStore che consente la persistenza di dati e metadati relativi alle istanze del flusso di lavoro in un database SQL Server 2005 o SQL Server 2008. Per maggiori dettagli, 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 altre informazioni, vedere Partecipanti di persistenza.

Windows Server AppFabric semplifica il processo di configurazione della persistenza. Per altre informazioni, vedere Concetti di persistenza con Windows Server App Fabric

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 nell'host del flusso di lavoro. Questa situazione si verifica, ad esempio, quando si usano 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 termina.

  • Quando viene eseguita un'attività Persist.

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

In questa sezione