Транзакционная NTFS
Транзакционная NTFS (TxF) — технология в Windows Vista и последующих операционных системах, позволяющая производить файловые операции на разделе с файловой системой NTFS при помощи транзакций, обеспечивая поддержку семантики атомарности, согласованности, изолированности и надёжности (ACID). Технология позволяет производить атомарные операции над файлом, над несколькими файлами и над несколькими источниками данных, такими, как реестр и базы данных. Технология призвана повышать надёжность создаваемых приложений, способствуя поддержанию целостности данных, и упрощать их разработку благодаря значительному уменьшению количества кода обработки ошибок.
Менеджер транзакций
[править | править код]Менеджер транзакций ядра (KTM) реализует транзакционную NTFS и транзакционный реестр (TxR). Для разработки приложений, выполняющих транзакции с иными ресурсами, необходимо разработать сервис поддержки транзакций, также называемый менеджером ресурсов. Приложения COM+ должны использовать свой нативный менеджер транзакций.
Менеджер транзакций ядра может работать непосредственно с координатором распределённых транзакций (DTC), что даёт возможность приложениям, работающим с DTC, объединять транзакционные файловые операции с операциями других транзакционных технологий в одну транзакцию.
Программный интерфейс
[править | править код]Типичное использование транзакционной NTFS состоит из следующих шагов:
- создание транзакции;
- получение дескриптора файла (все операции с использованием данного дескриптора будут транзакционными);
- внесение изменений в файл или файлы;
- закрытие всех файловых дескрипторов;
- подтверждение или откат транзакции.
Для операций, работающих с дескрипторами, используются обычные файловые функции Win32 API (например, WriteFile). Для операций, использующих имена файлов, имеются явные транзакционные функции.
Транзакционная функция | Нетранзакционный аналог | Описание |
---|---|---|
CreateTransaction | Создание транзакции | |
CreateFileTransacted | CreateFile | Создание (открытие) файла |
CopyFileTransacted | CopyFileEx | Копирование файла |
MoveFileTransacted | MoveFileWithProgress | Перемещение файла или каталога |
DeleteFileTransacted | DeleteFile | Удаление файла |
CreateDirectoryTransacted | CreateDirectoryEx | Создание каталога |
RemoveDirectoryTransacted | RemoveDirectory | Удаление каталога |
RollbackTransaction | Откат транзакции | |
CommitTransaction | Фиксация транзакции |
Другим способом является использование TxF через DTC. Для этого необходимо:
- открыть менеджер транзакций (DTC), создать транзакцию;
- из интерфейса DTC ITransaction получить интерфейс IKernelTransaction;
- получить дескриптор транзакции KTM и использовать его в последующих транзакционных файловых операциях;
- подтвердить или откатить транзакцию DTC.
Однако Microsoft настоятельно не рекомендует разработчикам использовать TxF в приложениях и предупреждает, что технология может быть недоступна в будущих версиях Microsoft Windows.
Ссылки
[править | править код]- Transactional NTFS (TxF) (Windows) (англ.). Dev Center - Desktop. Microsoft (16 октября 2012). Дата обращения: 3 декабря 2012. Архивировано 24 января 2013 года.
- Kernel Transaction Manager (англ.). MSDN Library. Microsoft (16 октября 2012). Дата обращения: 3 декабря 2012. Архивировано 24 января 2013 года.
- Jason Olson. Enhance Your Apps With File System Transactions (англ.). MSDN Magazine. Microsoft (июль 2007). Дата обращения: 3 декабря 2012. Архивировано 24 января 2013 года.