Транзакційна NTFS — Вікіпедія
Транзакційна 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.
- Transactional NTFS (TxF) (Windows) : [арх. 24.01.2013] / Microsoft // Dev Center - Desktop. — 2012. — 16 October. — Дата звернення: 03.12.2012.
- Kernel Transaction Manager : [арх. 24.01.2013] / Microsoft // MSDN Library. — 2012. — 16 October. — Дата звернення: 03.12.2012.
- Enhance Your Apps With File System Transactions : [арх. 24.01.2013] / Jason Olson ; Microsoft // MSDN Magazine. — 2007. — 1 July. — Дата звернення: 03.12.2012.