Quando usare NTFS transazionale
Un'applicazione può usare NTFS transazionale (TxF) per mantenere l'integrità dei dati su disco durante condizioni di errore impreviste. In generale, un'applicazione deve prendere in considerazione l'uso di TxF se l'applicazione scarica i file e usa altre tecniche per mantenere l'integrità dei dati. TxF può ottenere prestazioni migliori e semplificare il codice di gestione degli errori dell'applicazione migliorando al tempo stesso il ripristino e l'affidabilità degli errori. Nelle sezioni seguenti di questo argomento vengono forniti esempi di scenari per l'uso di TxF.
Aggiornamento di un file
L'aggiornamento di un file è un'operazione comune e in genere semplice. Tuttavia, se il sistema o l'applicazione ha esito negativo mentre un'applicazione aggiorna le informazioni su un disco, il risultato può essere irreversibile, perché i dati utente possono essere danneggiati da un'operazione di aggiornamento file completata parzialmente. Le applicazioni affidabili spesso eseguono sequenze complesse di copie e ridenominazione di file per garantire che i dati non siano danneggiati in caso di errore del sistema.
TxF semplifica la protezione delle operazioni di aggiornamento dei file da errori di sistema o applicazione da un'applicazione. Per aggiornare un file in modo sicuro, l'applicazione apre il file in modalità transazionale, apporta gli aggiornamenti necessari e quindi esegue il commit della transazione. Se il sistema o l'applicazione ha esito negativo durante l'aggiornamento del file, TxF ripristina automaticamente il file nello stato precedente all'avvio dell'aggiornamento del file, evitando così il danneggiamento dei file.
Aggiornamenti a più file
TxF è ancora più importante quando una singola operazione logica influisce su più file. Ad esempio, se si vuole usare uno strumento per rinominare una delle pagine HTML o ASP in un sito Web, uno strumento ben progettato correggerà anche tutti i collegamenti per usare il nuovo nome file. Tuttavia, un errore durante questa operazione lascia il sito Web in uno stato incoerente, con alcuni dei collegamenti che fanno ancora riferimento al nome del file precedente. Eseguendo l'operazione di ridenominazione del file e l'operazione di correzione del collegamento una singola transazione, TxF garantisce che la ridenominazione e la correzione del collegamento abbiano esito positivo o negativo come singola operazione.
Aggiornamenti simultanee coerenti
TxF isola le transazioni simultanee. Se un'applicazione apre un file per una lettura transazionale mentre un'altra applicazione ha lo stesso file aperto per un aggiornamento transazionale, TxF isola gli effetti delle due transazioni l'uno dall'altro. In altre parole, il lettore transazionale visualizza sempre una singola versione coerente del file, anche se il file è in corso di aggiornamento da un'altra transazione.
Un'applicazione può usare questa funzionalità per consentire ai clienti di visualizzare i file mentre altri clienti effettuano aggiornamenti. Ad esempio, un server Web transazionale può fornire una singola visualizzazione coerente dei file, mentre un altro strumento aggiorna simultaneamente tali file.
Nota
TxF non supporta gli aggiornamenti simultanei da più writer in transazioni diverse. TxF supporta solo un singolo writer con più lettori simultanei e coerenti.
Coordinamento con altri gestori di risorse transazioni
Le transazioni usate con file system transazioni possono essere usate anche con il Registro di sistema transazionato. Aggiornamenti al file e il Registro di sistema sono coordinati con una singola transazione.
Usando transazioni Distributed Transaction Coordinator (DTC) o System.Transactions, gli aggiornamenti eseguiti a SQL, MSMQ e altre risorse transazionali possono essere coordinati con gli aggiornamenti dei file transazionali. Per altre informazioni, vedere IKernelTransaction di DTC.
Scenari non supportati
TxF non supporta gli scenari di transazione seguenti:
- Transazioni nei volumi di rete, ad esempio nelle condivisioni file. TxF non è supportato dai protocolli CIFS/SMB.
- Transazioni in qualsiasi file system diverso da NTFS.
- Operazioni transazionate sui file memorizzati nella cache sul lato client.
- Accesso ai file tramite ID oggetto.
- Qualsiasi scenario di writer condiviso.
- Qualsiasi situazione in cui un file viene aperto per un lungo periodo di tempo (giorni o settimane).