Alternativ till att använda transaktionell NTFS
- Abstrakt
- Introduktion
- Alternativ till TxF efter scenario
- Program som uppdaterar en enda fil med "dokumentliknande" data
- Program som utför uppdateringar av flera filer och/eller till registerkupan
- Program som hanterar en uppsättning strukturerade data
- Program med transaktioner som involverar filer på en lokal NTFS-volym och tabeller i en extern SQL-databas
- Stängning & Rekommenderad åtgärd
Abstrakt
Microsoft rekommenderar starkt att utvecklare undersöker användningen av de diskuterade alternativen (eller i vissa fall undersöker andra alternativ) i stället för att använda en API-plattform som kanske inte är tillgänglig i framtida versioner av Windows.
Introduktion
TxF introducerades med Windows Vista som ett sätt att introducera atomiska filtransaktioner i Windows. Det gör det möjligt för Windows-utvecklare att ha transaktionell atomicitet för filåtgärder i transaktioner med en enda fil, i transaktioner som involverar flera filer och i transaktioner som sträcker sig över flera källor – till exempel registret (via TxR) och databaser (till exempel SQL). TxF är en kraftfull uppsättning API:er, men det har funnits ett extremt begränsat intresse från utvecklare för den här API-plattformen sedan Windows Vista, främst på grund av dess komplexitet och de olika finesser som utvecklare behöver beakta vid programutveckling. Därför överväger Microsoft att ersätta TxF-API:er i en framtida version av Windows för att fokusera utvecklings- och underhållsinsatser på andra funktioner och API:er som har större värde för en större majoritet av kunderna. I nästa avsnitt beskrivs exempel på alternativa metoder för att uppnå liknande resultat som TxF skulle göra för flera typer av programscenarier.
Alternativ till TxF efter scenario
Med de begränsningar som beskrivs ovan bör utvecklare undersöka alternativ till TxF för att täcka programscenarier som inte uppfylls av TxF. Här beskrivs några föreslagna alternativ till vanliga användningar av TxF som utvecklare kan överväga. Observera att den här listan varken är uttömmande eller fullständig.
Program som uppdaterar en enskild fil med "dokumentliknande" data
Många program som hanterar "dokumentliknande" data brukar läsa in hela dokumentet i minnet, arbeta på det och sedan skriva ut det igen för att spara ändringarna. Den nödvändiga atomiteten här är att ändringarna antingen tillämpas helt eller inte alls, eftersom ett inkonsekvent tillstånd skulle göra filen skadad. En vanlig metod är att skriva dokumentet till en ny fil och sedan ersätta den ursprungliga filen med den nya. En metod för att göra detta är med api:et ReplaceFile.
Program som utför uppdateringar av flera filer och/eller till registerstrukturen
Det finns många program som måste utföra en uppdatering atomiskt till en uppsättning filer och till registret. Det här scenariot uppnås oftast via ett installationsprogram, till exempel Windows Installer. Mer information om Windows Installer finns i Windows Installer.
Program som hanterar en uppsättning strukturerade data
Många program hanterar en uppsättning proprietära datastrukturer av olika typer som ett sätt att lagra data. En viktig utmaning för dessa program är processen att upprätthålla integriteten för interna pekare/referenser om ett fel inträffar under en uppdateringsåtgärd. Att skapa mekanismen för detta är verkligen ett "svårt problem", och därför kommer de flesta program att förlita sig på en sann databasserver för att hantera sin datauppsättning.
Två förslag som hjälper dig att hantera strukturerade data är:
- Microsoft tillhandahåller inkorgen Extensible Storage Engine (ESE) i Windows för att göra det möjligt för program att utföra transaktionsbaserade datauppdateringar och hämtningsåtgärder. Mer information om ESE (Extensible Storage Engine) finns i https://msdn.microsoft.com/library/gg269259.aspx.
- För program som kräver en mer kraftfull, robust och skalbar databasprovider rekommenderar vi att kunderna överväger att använda funktionen Filestream som är tillgänglig med Microsoft SQL Server. Mer information om SQL Filestreams finns i https://technet.microsoft.com/library/bb933993.aspx.
Program med transaktioner som involverar filer på en lokal NTFS-volym och tabeller i en extern SQL-databas
Det finns klasser av program som antingen har stora datamängdsbehov eller måste ha transaktionell atomitet i en åtgärd som involverar en extern databas och lokal lagring. I det här scenariot rekommenderar vi starkt att utvecklare överväger att använda SQL Filestreams för att utföra transaktionsfilåtgärder. Mer information om SQL Filestreams finns i https://technet.microsoft.com/library/bb933993.aspx.
Rekommenderad åtgärd för stängning av &
TxF är en komplex och nyanserad uppsättning API:er som vanligtvis inte används av program från tredje part. Med möjligheten att dessa API:er kanske inte är tillgängliga i framtida versioner av Windows, och det faktum att det finns enklare alternativa sätt att uppnå många av de scenarier som TxF utvecklades för, rekommenderar Microsoft starkt utvecklare att undersöka dessa alternativa metoder i stället för att skapa ett beroende av TxF i sina program.