Транзакційна NTFS (TxF) — технологія у Windows Vista і наступних операційних системах, яка дозволяє проводити файлові операції на розділі з файловою системою NTFS за допомогою транзакцій, забезпечуючи підтримку семантики атомарності, узгодженості, ізольованості і надійності (ACID). Технологія дозволяє виробляти атомарні операції над файлом, над декількома файлами і над декількома джерелами даних, такими, як реєстр і бази даних. Технологія покликана підвищувати надійність створюваних додатків, сприяючи підтриманню цілісності даних, і спрощувати їх розробку, завдяки значному зменшенню кількості коду обробки помилок.
Однак Microsoft настійно не рекомендує розробникам використовувати TxF в додатках і попереджає, що технологія може бути недоступною в майбутніх версіях Microsoft Windows.[1][2]
Менеджер транзакцій ядра (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. Для цього необхідно: