2010-04-22 36 views
4

我在服务器上的客户端和Win2003上使用WinXP。在WinXP上使用.NET的文件系统事务

我需要做原子操作:创建移动文件,插入更新数据库。

是否有使用WinXP的文件系统交易的任何良好做法? 我知道Vista/Win2008/Win7在WinXP中有TxF事务(NTFS),但是不是

我不想使用COM +,也没有其他复杂的解决方案。只需要良好的示例代码,以获得良好的实践。

Transactions and file-actions by Alberto Poblacion

在早于Windows Vista的版本,文件系统是不是 事务性的,所以你需要一个单独的工具做你的文件的交易。

您可以使用组件服务(COM +)实施补偿资源 管理器(CRM)。如果在更新 文件期间崩溃,CRM将提供事务日志并在系统重新启动期间回滚 更改,但您必须提供代码(在您自己的DLL中)提交,并且 回滚冲突,通常通过将文件移入或移出临时文件夹。它可以通过System.EnterpriseServices命名空间的 以.NET完成。如果我没有记错,微软的官方课程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/

回答

0

您不会得到true XP中NTFS的文件系统事务。也就是说,你可能不需要它。

例如,通过软件安装,您可以通过使用Windows Installer之类的功能免费获取事务的语义。

你想要最终完成什么?

+0

我想要做到这一点:将文件夹从文件夹A移动到文件夹B,并更新数据库。如果有任何错误,回滚数据库和“回滚”文件系统中的变化。谢谢。 – Kiquenet 2010-04-23 15:17:02