问题标签 [txf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
782 浏览

vb6 - Vista 幻影目录

我们有一个程序,安装程序会检查配置文件是否存在,如果存在,它不会复制该文件(它假设用户已经修改了他们的配置文件并希望保留这些修改)。不幸的是,这是一个 pre-Vista 应用程序,它将配置文件保存在 Program Files 中。问题是,如果您在重新安装某些 API 时手动清除该目录,仍然认为那里有一个目录。例如 VB6,它的文件浏览对话框看到文件夹,但是资源管理器、cmd shell 等看不到文件夹。覆盖文件仍然会留下旧文件(对某些 API,但不是对资源管理器),除了“浏览文件”对话框中的表单外,无法删除旧文件。

这些 Phantom 文件夹是怎么回事,我们如何删除文件以便所有 API 看到相同的内容?也许它与TxF或用于搜索的索引器有关,但我们使用的安装程序 (InnoSetup) 和应用程序的一部分(用 VB6 编写的部分)都看到了旧版本的文件,而其他一切都看到了当前版本。

0 投票
2 回答
1339 浏览

c# - .net 持久资源管理器,用于事务文件系统访问

我正试图围绕 C# 中 System.Transactions 命名空间的使用。我在 MSDN 上找到了一些关于使用资源管理器的文档,但它只详细介绍了易失性内存资源管理器(如 Transactional )。我基本上是在寻找可以在 TransactionScope 中使用的东西,就像 Transactional<> 一样,但用它来写入/修改/删除磁盘上的文件。标准库中是否存在类似的东西?我已经读到 NTFS 现在有“TxF”以允许事务文件系统访问——我期待在 .net 中找到利用它的东西。也许我需要实现自己的?

0 投票
5 回答
2138 浏览

c# - 任何使用事务性 NTFS (TxF) 的真实企业级体验?

背景:

我知道有关 Transactional NTFS (TxF)的SO question和描述如何使用它这篇文章,但我正在寻找具有大量blob 数据(例如文档和/或照片)需要以事务方式保存一次并多次读取

  • 我们预计每天会写入数万份文件,每小时读取数万份文件。
  • 我们可以将索引存储在文件系统或 SQL Server 中,但必须能够将其扩展到多个盒子。
  • 我们必须保留轻松备份和恢复数据以进行灾难恢复的能力。

问题:

  • 任何使用事务性 NTFS (TxF) 的真实企业级体验?

相关问题:

  • 任何人都尝试过使用 TxF 的分布式事务,其中同一个文件一次提交到两个镜像服务器?
  • 有人尝试过使用文件系统和数据库进行分布式事务吗?
  • 您可以分享任何性能问题/可靠性问题/性能数据吗?在交易成为问题之前,有没有人做过这种规模的事情?

编辑:为了更清楚,我研究了其他技术,包括 SQL Server 2008 的新 FILESTREAM 数据类型,但这个问题专门针对事务文件系统

更多资源:

0 投票
1 回答
414 浏览

.net - 安全锁定文件然后移动?视窗

我有一个文件,需要在将一行插入数据库之前确保它存在。插入后,我需要使用 PK 作为文件名的一部分并将其移动到另一个位置。

我如何检查它是否存在然后锁定它以便在我可以插入数据库之前无法删除它然后继续移动文件而不在释放锁定时删除它?

该文件也可能正在使用中。我正在考虑将文件复制到安全位置,然后将该文件移走。在这种情况下,我需要复制一个用于读取的文件。我怎样才能安全地完成上述步骤?

使用 .NET

0 投票
3 回答
892 浏览

c# - Process.Start() 上的事务性 NTFS (TxF)

考虑以下代码:

在这种情况下,SQLInstaller.exe 所做的更改会回滚吗?更具体地说,通过 Process.Start() 启动的外部进程所做的更改是否会由 TxF 处理?

谢谢!

0 投票
1 回答
216 浏览

winapi - 使用事务性 NTFS 阻塞写锁

根据MSDN 文档,事务性 NTFS 似乎不允许阻止打开文件进行写入 - 相反,打开操作失败并显示 ERROR_SHARING_VIOLATION。我想阻止写入 - 我该怎么做?

理想情况下,我希望解决方案具有以下属性:

  1. 通过网络共享工作(因此没有本地命名互斥体句柄)
  2. 如果拥有进程死亡,则自动释放
  3. 不需要单独的文件(命名流可以)
  4. 允许锁定等待超时(或可从另一个线程或 APC 取消)

有没有人对使用具有这些属性的事务性 NTFS 的锁定方法有一些经验?

0 投票
2 回答
2560 浏览

transactional - 使用事务性 NTFS 的替代方案

鉴于 Microsoft 已弃用 Transactional NTFS (TxF)

Microsoft 强烈建议开发人员使用替代方法来满足您的应用程序的需求。开发 TxF 的许多场景都可以通过更简单、更容易获得的技术来实现。此外,TxF 可能在 Microsoft Windows 的未来版本中不可用。

虽然 TxF 是一组功能强大的 API,但自 Windows Vista 以来,开发人员对该 API 平台的兴趣极为有限,这主要是由于其复杂性和开发人员在应用程序开发中需要考虑的各种细微差别。因此,Microsoft 正在考虑在未来版本的 Windows 中弃用 TxF API,以便将开发和维护工作重点放在对大多数客户具有更大价值的其他功能和 API 上。

这意味着我需要一个替代方案:

我的交易要求相当简单——移动两个文件:

我考虑过MoveFile转为CopyFile+ DeleteFile

但我希望有一个好的解决方案,而不是一个错误的解决方案。所以我再试一次:

除了我希望有一个好的解决方案,而不是一个错误的解决方案。

0 投票
1 回答
960 浏览

c# - 事务性 NTFS 包装器

我正在使用 msdn 上提供的事务性 NTFS 包装器支持文件系统操作的原子事务,可用示例仅显示如何使用 transactedFiles 但我还需要创建、移动和复制事务目录,我不知道如何使用 TransactedDirectory 类,你能帮忙吗?我试过这段代码,但它似乎不正确:

它给出了一个错误“访问被拒绝,该文件夹正在被另一个进程使用”。

0 投票
1 回答
52 浏览

winapi - 如何确定当前事务中是否创建了目录?

我有一些基于 TxF 系统的文件/目录管理工具。基本上它是这样工作的:

  1. 我正在使用CreateTransaction函数创建事务。
  2. 在代码后面的某个地方,我使用CreateDirectoryTransacted函数创建了许多目录。
  3. 稍后我需要确定我是否已经从给定路径中的点 (2) 创建的目录仍在此事务中(CommitTransaction到目前为止没有调用)。

是否有一些替代品PathFileExists但可以使用交易系统?