Alternative all'uso di NTFS transazionale

Classi astratte

Microsoft consiglia vivamente agli sviluppatori di esaminare l'uso delle alternative discusse (o in alcuni casi, esaminare altre alternative) anziché adottare una piattaforma API che potrebbe non essere disponibile nelle versioni future di Windows.

Introduzione

TxF è stato introdotto con Windows Vista come mezzo per introdurre transazioni di file atomiche in Windows. Consente agli sviluppatori Windows di avere un'atomicità transazionale per le operazioni sui file nelle transazioni con un singolo file, nelle transazioni che coinvolgono più file e nelle transazioni che si estendono su più origini, ad esempio il Registro di sistema (tramite TxR) e i database (ad esempio SQL). Anche se TxF è un potente set di API, c'è stato un interesse estremamente limitato per gli sviluppatori in questa piattaforma API poiché Windows Vista principalmente a causa della sua complessità e delle varie sfumature che gli sviluppatori devono considerare come parte dello sviluppo di applicazioni. Di conseguenza, Microsoft sta valutando la deprecazione delle API TxF in una versione futura di Windows per concentrare le attività di sviluppo e manutenzione su altre funzionalità e API che hanno più valore per la maggior parte dei clienti. Nella sezione successiva vengono descritti i metodi alternativi di esempio per ottenere risultati simili a quello di TxF per diversi tipi di scenari di applicazione.

Alternative a TxF per scenario

Con le limitazioni descritte in precedenza, gli sviluppatori devono esaminare le alternative a TxF per coprire gli scenari di applicazione che non sono soddisfatti da TxF. Di seguito sono illustrate alcune alternative suggerite agli usi comuni di TxF da considerare per gli sviluppatori. Si noti che questo elenco non è né esaustivo né completo.

Applicazioni che aggiornano un singolo file con dati "simili a documenti"

Molte applicazioni che gestiscono dati "simili a documenti" tendono a caricare l'intero documento in memoria, operano su di esso e quindi scrivono di nuovo per salvare le modifiche. L'atomicità necessaria in questo caso è che le modifiche vengono applicate completamente o non applicate affatto, perché uno stato incoerente renderebbe danneggiato il file. Un approccio comune consiste nel scrivere il documento in un nuovo file, quindi sostituire il file originale con quello nuovo. Un metodo per eseguire questa operazione consiste nell'API ReplaceFile .

Applicazioni che eseguono aggiornamenti a più file e/o all'hive del Registro di sistema

Esistono molte applicazioni che devono eseguire in modo atomico un aggiornamento a un set di file e al Registro di sistema. Questo scenario viene in genere ottenuto tramite un'applicazione del programma di installazione, ad esempio Windows Installer. Per altre informazioni su Windows Installer, vedere Windows Installer.

Applicazioni che gestiscono un set di dati strutturati

Molte applicazioni gestiscono alcuni set di strutture di dati proprietari di tipi diversi come mezzo per archiviare i dati. Una sfida significativa per queste applicazioni è il processo di mantenimento dell'integrità dei puntatori/riferimenti interni se si verifica un errore durante un'operazione di aggiornamento. La creazione del meccanismo per questo è in effetti un "problema difficile" e pertanto la maggior parte delle applicazioni si basa su un vero server di database per gestire il set di dati.

Sono disponibili due suggerimenti per gestire i dati strutturati:

  • Microsoft fornisce la posta in arrivo Extensible Archiviazione Engine (E edizione Standard) in Windows per consentire alle applicazioni di eseguire operazioni di aggiornamento e recupero dei dati transazionali. Per altre informazioni su Extensible Archiviazione Engine (E edizione Standard), vedere https://msdn.microsoft.com/library/gg269259.aspx.
  • Per le applicazioni che richiedono un provider di database più potente, affidabile e scalabile, è consigliabile che i clienti considerino l'uso della funzionalità Filestream disponibile con Microsoft SQL Server. Per altre informazioni sui filestream SQL, vedere https://technet.microsoft.com/library/bb933993.aspx.

Applicazioni con transazioni che coinvolgono file in un volume e tabelle NTFS locali in un database SQL esterno

Esistono classi di applicazioni che hanno esigenze di set di dati di grandi dimensioni o che devono avere un'atomicità transazionale in un'operazione che coinvolge un database esterno e una risorsa di archiviazione locale. Per questo scenario, è consigliabile che gli sviluppatori considerino l'uso di filestream SQL per eseguire operazioni di file transazionali. Per altre informazioni sui filestream SQL, vedere https://technet.microsoft.com/library/bb933993.aspx.

TxF è un set complesso e complesso di API che non vengono comunemente usate dalle applicazioni di terze parti. Con la possibilità che queste API non siano disponibili nelle versioni future di Windows e il fatto che ci siano mezzi alternativi più semplici per ottenere molti degli scenari per cui è stato sviluppato TxF, Microsoft consiglia vivamente agli sviluppatori di analizzare tali mezzi alternativi anziché creare una dipendenza da TxF nelle applicazioni.