Транзакционная NTFS

Транзакционная NTFS (TxF) — технология в Windows Vista и последующих операционных системах, позволяющая производить файловые операции на разделе с файловой системой NTFS при помощи транзакций, обеспечивая поддержку семантики атомарности, согласованности, изолированности и надёжности (ACID). Технология позволяет производить атомарные операции над файлом, над несколькими файлами и над несколькими источниками данных, такими, как реестр и базы данных. Технология призвана повышать надёжность создаваемых приложений, способствуя поддержанию целостности данных, и упрощать их разработку благодаря значительному уменьшению количества кода обработки ошибок.

Менеджер транзакций

Менеджер транзакций ядра (KTM) реализует транзакционную NTFS и транзакционный реестр (TxR). Для разработки приложений, выполняющих транзакции с иными ресурсами, необходимо разработать сервис поддержки транзакций, также называемый менеджером ресурсов. Приложения COM+ должны использовать свой нативный менеджер транзакций.

Менеджер транзакций ядра может работать непосредственно с координатором распределённых транзакций (DTC), что даёт возможность приложениям, работающим с DTC, объединять транзакционные файловые операции с операциями других транзакционных технологий в одну транзакцию.

Программный интерфейс

Типичное использование транзакционной NTFS состоит из следующих шагов:

  • создание транзакции;
  • получение дескриптора файла (все операции с использованием данного дескриптора будут транзакционными);
  • внесение изменений в файл или файлы;
  • закрытие всех файловых дескрипторов;
  • подтверждение или откат транзакции.

Для операций, работающих с дескрипторами, используются обычные файловые функции Win32 API (например, WriteFile). Для операций, использующих имена файлов, имеются явные транзакционные функции.

Некоторые транзакционные функции
Транзакционная функцияНетранзакционный аналогОписание
CreateTransactionСоздание транзакции
CreateFileTransactedCreateFileСоздание (открытие) файла
CopyFileTransactedCopyFileExКопирование файла
MoveFileTransactedMoveFileWithProgressПеремещение файла или каталога
DeleteFileTransactedDeleteFileУдаление файла
CreateDirectoryTransactedCreateDirectoryExСоздание каталога
RemoveDirectoryTransactedRemoveDirectoryУдаление каталога
RollbackTransactionОткат транзакции
CommitTransactionФиксация транзакции

Другим способом является использование TxF через DTC. Для этого необходимо:

  • открыть менеджер транзакций (DTC), создать транзакцию;
  • из интерфейса DTC ITransaction получить интерфейс IKernelTransaction;
  • получить дескриптор транзакции KTM и использовать его в последующих транзакционных файловых операциях;
  • подтвердить или откатить транзакцию DTC.

Однако Microsoft настоятельно не рекомендует разработчикам использовать TxF в приложениях и предупреждает, что технология может быть недоступна в будущих версиях Microsoft Windows.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.