我需要执行原子操作:创建-移动文件,插入-更新数据库。
在WinXP中,有没有关于文件系统事务的良好实践方法? 我知道在Vista / Win2008 / Win7中有TxF事务(NTFS),但在WinXP中没有。
我不想使用COM +或其他复杂的解决方案。只需要好的示例代码,以获得良好的实践方法。
在比Vista早的Windows版本中,文件系统不是事务性的,因此您需要使用单独的工具对文件进行事务处理。
您可以使用组件服务(COM+)实现补偿资源管理器(CRM)。CRM将提供事务日志,并在系统重新启动期间回滚更改,如果在更新文件时崩溃,但您必须提供代码(在自己的DLL中)来提交和回滚事务,通常是通过将文件移入和移出临时文件夹来完成的。可以通过System.EnterpriseServices命名空间在.Net中完成所有操作。如果我没记错的话,Microsoft官方课程2557包含一个教如何创建CRM的章节,他们使用的示例正是基于对文件系统的更改。
在较新的Windows版本中,可以在NTFS上执行事务操作:
http://msdn.microsoft.com/en-us/library/bb986748(VS.85).aspx
Edit.
References:
https://transactionalfilemgr.codeplex.com/
http://www.codeproject.com/Articles/690136/All-About-TransactionScope
http://ayende.com/blog/4528/who-stole-my-transaction