Транзакційна 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. Для цього необхідно:
- відкрити менеджер транзакцій (DTC), створити транзакцію;
- з інтерфейсу DTC ITransaction отримати інтерфейс IKernelTransaction;
- отримати дескриптор транзакції KTM і використовувати його в наступних транзакційних файлових операціях;
- підтвердити або відкотити транзакцію DTC.
Примітки
- ↑ About Transactional NTFS // docs.microsoft.com. — . — Дата звернення: 27.10.2019. — Цитата: «Microsoft strongly recommends developers utilize alternative means to achieve your application s needs. Many scenarios that TxF was developed for can be achieved through simpler and more readily available techniques. Furthermore, TxF may not be available in future versions of Microsoft Windows».
- ↑ Alternatives to using Transactional NTFS / Microsoft // MSDN. — Дата звернення: 30 червня 2015.
Посилання