Я использую WinXP на клиентах и Win2003 на сервере.
Мне нужно выполнить атомарные действия: создавать-перемещать файлы, вставлять-обновлять базу данных.
Есть ли хорошие практики для транзакций файловой системы с использованием WinXP?
Я знаю, что в Vista / Win2008 / Win7 есть транзакция TxF (NTFS), но не в WinXP.
Я не хочу использовать COM + или другие сложные решения. Нужен только хороший пример кода, для хорошей практики.
Транзакции и файловые действия Альберто Побласьона
В версиях Windows, более ранних, чем Vista, файловая система не
транзакционный, поэтому вам нужен отдельный инструмент для транзакций в ваших файлах.
Вы можете использовать Службы компонентов (COM +) для реализации Компенсирующего ресурса
Менеджер (CRM). CRM предоставит журнал транзакций и откатится
изменения во время перезапуска системы, если он произошел сбой во время обновления вашего
файлы, но вы должны будете предоставить код (в вашей собственной DLL) для фиксации и
откатить переход, как правило, путем перемещения файлов в и из
временная папка. Все это можно сделать в .Net с помощью
Пространство имен System.EnterpriseServices. Если я правильно помню, Microsoft
Официальный курс 2557 содержит главу, которая учит, как создать CRM,
и пример, который они используют, построен именно на изменениях в
файловая система.
В более новых версиях Windows вы можете выполнять транзакционные операции на
NTFS:
http://msdn.microsoft.com/en-us/library/bb986748(VS.85).aspx
http://msdn.microsoft.com/en-us/magazine/cc163388.aspx
http://codeproject.com/KB/vista/VistaKTM.aspx
Редактировать.
Ссылки
https://transactionalfilemgr.codeplex.com/
http://www.codeproject.com/Articles/690136/All-About-TransactionScope
http://ayende.com/blog/4528/who-stole-my-transaction
http://www.chinhdo.com/20080825/transactional-file-manager/
http://bmegias.wordpress.com/2010/10/25/ejecutar-acciones-al-finalizar-la-transaccion-transactioncompleted-vs-enlistvolatile/