Alternativen zur Verwendung von Transaktions-NTFS

Zusammenfassung

Microsoft empfiehlt Entwicklern dringend, die beschriebenen Alternativen zu untersuchen (oder in einigen Fällen andere Alternativen zu untersuchen), anstatt eine API-Plattform einzuführen, die in zukünftigen Versionen von Windows möglicherweise nicht verfügbar ist.

Einführung

TxF wurde mit Windows Vista eingeführt, um atomische Dateitransaktionen in Windows einzuführen. Es ermöglicht Windows-Entwicklern, für Dateivorgänge in Transaktionen mit einer einzelnen Datei, in Transaktionen mit mehreren Dateien und in Transaktionen, die mehrere Quellen umfassen , wie z. B. die Registrierung (über TxR) und Datenbanken (z. B. SQL) transaktionsal unteilbar zu sein. Während TxF ein leistungsstarker Satz von APIs ist, besteht das Interesse der Entwickler an dieser API-Plattform seit Windows Vista in erster Linie aufgrund seiner Komplexität und verschiedener Nuancen, die Entwickler im Rahmen der Anwendungsentwicklung berücksichtigen müssen. Daher erwägt Microsoft, TxF-APIs in einer zukünftigen Version von Windows veraltet zu machen, um die Entwicklungs- und Wartungsbemühungen auf andere Features und APIs zu konzentrieren, die für eine größere Mehrheit der Kunden mehr Wert haben. Im nächsten Abschnitt werden alternative Beispielmethoden beschrieben, um ähnliche Ergebnisse wie TxF für verschiedene Arten von Anwendungsszenarien zu erzielen.

Alternativen zu TxF nach Szenario

Mit den oben beschriebenen Einschränkungen sollten Entwickler Alternativen zu TxF untersuchen, um Anwendungsszenarien abzudecken, die von TxF nicht erfüllt werden. Hier werden einige vorgeschlagene Alternativen zur allgemeinen Verwendung von TxF für Entwickler erläutert. Beachten Sie, dass diese Liste weder vollständig noch vollständig ist.

Anwendungen, die eine einzelne Datei mit "dokumentähnlichen" Daten aktualisieren

Viele Anwendungen, die sich mit "dokumentähnlichen" Daten befassen, neigen dazu, das gesamte Dokument in den Arbeitsspeicher zu laden, es zu bearbeiten und es dann wieder herauszuschreiben, um die Änderungen zu speichern. Die erforderliche Atomarität besteht darin, dass die Änderungen entweder vollständig oder überhaupt nicht angewendet werden, da ein inkonsistenter Zustand die Datei beschädigt. Ein gängiger Ansatz besteht darin, das Dokument in eine neue Datei zu schreiben und dann die ursprüngliche Datei durch die neue zu ersetzen. Eine Methode hierfür ist die ReplaceFile-API .

Anwendungen, die Updates für mehrere Dateien und/oder die Registrierungsstruktur durchführen

Es gibt viele Anwendungen, die atomar ein Update für eine Reihe von Dateien und für die Registrierung durchführen müssen. Dieses Szenario wird am häufigsten durch eine Installationsprogrammanwendung wie Windows Installer erreicht. Weitere Informationen zu Windows Installer finden Sie unter Windows Installer.

Anwendungen, die eine Reihe strukturierter Daten verwalten

Viele Anwendungen verwalten eine Reihe proprietärer Datenstrukturen unterschiedlicher Typen, um Daten zu speichern. Eine wichtige Herausforderung für diese Anwendungen ist der Prozess der Aufrechterhaltung der Integrität interner Zeiger/Verweise, wenn während eines Updatevorgangs ein Fehler auftritt. Das Erstellen des Mechanismus hierfür ist in der Tat ein "schwieriges Problem", und daher verlassen sich die meisten Anwendungen auf einen echten Datenbankserver, um ihr Dataset zu verwalten.

Zwei Vorschläge zur Verwaltung strukturierter Daten sind:

  • Microsoft stellt den Posteingang der Extensible Storage Engine (ESE) in Windows bereit, damit Anwendungen transaktionente Datenaktualisierungs- und -abrufvorgänge ausführen können. Weitere Informationen zur Extensible Storage Engine (ESE) finden Sie unter https://msdn.microsoft.com/library/gg269259.aspx.
  • Für Anwendungen, die einen leistungsfähigeren, robusteren und skalierbareren Datenbankanbieter erfordern, wird empfohlen, dass Kunden die Verwendung der Filestream-Funktion in Betracht ziehen, die mit Microsoft SQL Server verfügbar ist. Weitere Informationen zu SQL-Filestreams finden Sie unter https://technet.microsoft.com/library/bb933993.aspx.

Anwendungen mit Transaktionen mit Dateien auf einem lokalen NTFS-Volume und Tabellen in einer externen SQL-Datenbank

Es gibt Klassen von Anwendungen, die entweder große Datasetanforderungen haben oder bei einem Vorgang, der eine externe Datenbank und einen lokalen Speicher umfasst, eine transaktionale Atomarität aufweisen müssen. Für dieses Szenario wird dringend empfohlen, dass Entwickler die Verwendung von SQL Filestreams zum Ausführen von Transaktionsdateivorgängen in Betracht ziehen. Weitere Informationen zu SQL-Filestreams finden Sie unter https://technet.microsoft.com/library/bb933993.aspx.

TxF ist eine komplexe und nuancierte Gruppe von APIs, die häufig nicht von Drittanbieteranwendungen verwendet werden. Mit der Möglichkeit, dass diese APIs in zukünftigen Versionen von Windows möglicherweise nicht verfügbar sind, und der Tatsache, dass es einfachere alternative Mittel gibt, um viele der Szenarien zu erreichen, für die TxF entwickelt wurde, empfiehlt Microsoft Entwicklern dringend, diese alternativen Mittel zu untersuchen, anstatt eine Abhängigkeit von TxF in ihren Anwendungen zu schaffen.