Delen via


Alternatieven voor het gebruik van transactionele NTFS

Samenvatting

Microsoft raadt ontwikkelaars ten zeerste aan om gebruik te maken van de besproken alternatieven (of in sommige gevallen andere alternatieven te onderzoeken) in plaats van een API-platform te gebruiken dat mogelijk niet beschikbaar is in toekomstige versies van Windows.

Introductie

TxF werd geïntroduceerd met Windows Vista als een middel om atomische bestandstransacties naar Windows te introduceren. Hierdoor kunnen Windows-ontwikkelaars transactionele atomiciteit hebben voor bestandsbewerkingen in transacties met één bestand, in transacties met meerdere bestanden en in transacties die meerdere bronnen omvatten, zoals het register (via TxR) en databases (zoals SQL). Hoewel TxF een krachtige set API's is, is er zeer beperkte interesse voor ontwikkelaars in dit API-platform sinds Windows Vista voornamelijk vanwege de complexiteit en verschillende nuances die ontwikkelaars moeten overwegen als onderdeel van de ontwikkeling van toepassingen. Als gevolg hiervan overweegt Microsoft txF-API's in een toekomstige versie van Windows te verwijderen om de ontwikkelings- en onderhoudsinspanningen te richten op andere functies en API's die meer waarde hebben voor een grotere meerderheid van klanten. In de volgende sectie worden voorbeeld alternatieve methoden beschreven om vergelijkbare resultaten te bereiken, zoals TxF zou doen voor verschillende soorten toepassingsscenario's.

Alternatieven voor TxF per scenario

Met de hierboven beschreven beperkingen moeten ontwikkelaars alternatieven voor TxF onderzoeken om toepassingsscenario's te behandelen die niet worden voldaan door TxF. Hier worden enkele voorgestelde alternatieven voor veelvoorkomende toepassingen van TxF besproken voor ontwikkelaars om rekening mee te houden. Houd er rekening mee dat deze lijst noch uitputtend noch compleet is.

Toepassingen die één bestand bijwerken met 'documentachtige' gegevens

Veel toepassingen die omgaan met 'documentachtige' gegevens laden meestal het hele document in het geheugen, werken erop en schrijven deze vervolgens terug om de wijzigingen op te slaan. De benodigde atomiciteit hier is dat de wijzigingen volledig worden toegepast of helemaal niet worden toegepast, omdat een inconsistente status het bestand beschadigd zou maken. Een veelvoorkomende methode is het schrijven van het document naar een nieuw bestand en vervolgens het oorspronkelijke bestand vervangen door het nieuwe bestand. Een methode hiervoor is de ReplaceFile-API.

Toepassingen die updates uitvoeren voor meerdere bestanden en/of naar de register-hive

Er zijn veel toepassingen die atomisch een update moeten uitvoeren naar een set bestanden en het register. Dit scenario wordt meestal bereikt via een installatietoepassing, zoals Windows Installer. Raadpleeg Windows Installervoor meer informatie over Windows Installer.

Toepassingen die een set gestructureerde gegevens beheren

Veel toepassingen beheren een aantal eigen gegevensstructuren van verschillende typen als een middel om gegevens op te slaan. Een belangrijke uitdaging voor deze toepassingen is het onderhoud van de integriteit van interne aanwijzers/verwijzingen als er een fout optreedt tijdens een updatebewerking. Het maken van het mechanisme hiervoor is inderdaad een 'moeilijk probleem', en daarom zijn de meeste toepassingen afhankelijk van een echte databaseserver om hun gegevensset te beheren.

Twee suggesties voor het beheren van gestructureerde gegevens zijn:

  • Microsoft levert de Extensible Storage Engine (ESE) ingebouwd in Windows om toepassingen te laten transactiegegevens bij te werken en op te halen. Zie https://msdn.microsoft.com/library/gg269259.aspxvoor meer informatie over de Extensible Storage Engine (ESE).
  • Voor toepassingen waarvoor een krachtigere, robuustere en schaalbare databaseprovider is vereist, is het raadzaam dat klanten overwegen om de Filestream-functie te gebruiken die beschikbaar is voor Microsoft SQL Server. Zie https://technet.microsoft.com/library/bb933993.aspxvoor meer informatie over SQL Filestreams.

Toepassingen met transacties met betrekking tot bestanden op een lokaal NTFS-volume en tabellen in een externe SQL-database

Er zijn klassen toepassingen die grote gegevenssetbehoeften hebben of transactionele atomiciteit moeten hebben in een bewerking waarbij een externe database en lokale opslag betrokken zijn. Voor dit scenario wordt het ten zeerste aanbevolen dat ontwikkelaars overwegen OM SQL Filestreams te gebruiken om transactionele bestandsbewerkingen uit te voeren. Zie https://technet.microsoft.com/library/bb933993.aspxvoor meer informatie over SQL Filestreams.

TxF is een complexe en genuanceerde set API's die niet vaak worden gebruikt door toepassingen van derden. Met de mogelijkheid dat deze API's mogelijk niet beschikbaar zijn in toekomstige versies van Windows en het feit dat er eenvoudigere alternatieve middelen zijn om veel van de scenario's te bereiken waarvoor TxF is ontwikkeld, raadt Microsoft ontwikkelaars ten zeerste aan om deze alternatieve middelen te onderzoeken in plaats van een afhankelijkheid van TxF in hun toepassingen te maken.