何时使用事务性 NTFS

应用程序可以使用事务 NTFS (TxF) 在意外错误情况下保留磁盘上数据的完整性。 通常,如果应用程序正在刷新文件并使用其他技术来维护数据完整性,则应用程序应考虑使用 TxF。 TxF 可以更好地执行并简化应用程序的错误处理代码,同时提高错误恢复和可靠性。 本主题中的以下部分提供了使用 TxF 的方案示例。

更新文件

更新文件是一种常见且通常简单的操作。 但是,如果系统或应用程序在应用程序更新磁盘上的信息时出现故障,则结果可能是灾难性的,因为用户数据可能会因部分完成的文件更新操作而损坏。 可靠的应用程序通常执行复杂的文件复制和文件重命名序列,以确保在系统发生故障时数据不会损坏。

TxF 使应用程序能够轻松地保护文件更新操作免受系统或应用程序故障的影响。 为了安全地更新文件,应用程序以事务处理模式打开文件,进行必要的更新,然后提交事务。 如果系统或应用程序在文件更新期间出现故障,则 TxF 会自动将文件还原到文件更新开始前的状态,从而避免文件损坏。

多文件汇报

当单个逻辑操作影响多个文件时,TxF 更为重要。 例如,如果要使用工具来重命名网站上的一个 HTML 或 ASP 页面,设计良好的工具也会修复所有链接以使用新文件名。 但是,此操作期间的失败会使网站处于不一致状态,其中一些链接仍引用旧文件名。 通过将文件重命名操作和链接修复操作设置为单个事务,TxF 可确保文件重命名和链接修复作为单个操作成功或失败。

一致的并发汇报

TxF 隔离并发事务。 如果应用程序打开一个文件进行事务性读取,而另一个应用程序为事务性更新打开了相同的文件,则 TxF 会将这两个事务的效果相互隔离。 换句话说,事务读取器始终查看文件的单个一致版本,即使该文件正在由另一个事务更新。

应用程序可以使用此功能来允许客户在进行更新时查看文件。 例如,事务 Web 服务器可以提供单个一致的文件视图,而另一个工具可同时更新这些文件。

注意

TxF 不支持不同事务中多个编写器进行并发更新。 TxF 仅支持具有多个并发一致读取器的单个编写器。

 

与其他事务处理资源管理器协调

与事务处理文件系统一起使用的事务也可以与事务处理注册表一起使用。 文件和注册表的汇报与单个事务协调。

通过使用 分布式事务处理协调器 (DTC) 事务或 System.Transactions,可以对 SQL、MSMQ 和其他事务资源进行的更新与事务处理的文件更新进行协调。 有关详细信息,请参阅 DTC 的 IKernelTransaction

不支持的方案

TxF 不支持以下事务方案:

  • 网络卷上的事务,例如文件共享上的事务。 CIFS/SMB 协议不支持 TxF。
  • NTFS 以外的任何文件系统上的事务。
  • 对客户端缓存缓存的文件执行事务处理操作。
  • 使用对象 ID 的文件访问。
  • 任何共享编写器方案。
  • ) 长时间打开文件 (天或数周的任何情况。