使用交易式NTFS的替代方案

摘要

Microsoft 強烈建議開發人員使用所討論的替代方案進行調查(在某些情況下,調查其他替代方案),而不是採用未來 Windows 版本可能無法使用的 API 平臺。

簡介

TxF 是 Windows Vista 引進的,作為將不可部分完成的檔案交易引入 Windows 的方法。 它可讓 Windows 開發人員在具有單一檔案的交易、涉及多個檔案的交易,以及跨越多個來源的交易中,例如登錄(透過 TxR)和資料庫(例如 SQL)的交易,擁有交易不可部分完成性。 雖然 TxF 是一組功能強大的 API,但因為 Windows Vista 主要是因為其複雜度和各種細微差別,開發人員需要考慮做為應用程式開發的一部分,因此對這個 API 平臺的興趣非常有限。 因此,Microsoft 正在考慮在未來版本的 Windows 中取代 TxF API,以將開發和維護工作集中在其他功能與 API 上,這些功能和 API 對大部分客戶具有更多價值。 下一節說明範例替代方法,以達到類似 TxF 在數種類型的應用程式案例中達成類似結果。

依案例的 TxF 替代方案

使用上述限制,開發人員應該調查 TxF 的替代方案,以涵蓋 TxF 不符合的應用程式案例。 這裡將討論一些建議的 TxF 常見用途替代方案,以供開發人員考慮。 請注意,這份清單既不完整也不完整。

使用類似檔案的數據更新單一檔案的應用程式

許多處理類似「檔」數據的應用程式通常會將整個檔載入記憶體、操作它,然後寫回以儲存變更。 此處所需的不可部分完成性是完全套用或完全未套用變更,因為不一致的狀態會使檔案損毀。 常見的方法是將檔寫入新檔案,然後將源檔取代為新的檔案。 若要這樣做,其中一個方法是使用 ReplaceFile API。

對多個檔案和/或登錄區執行更新的應用程式

有許多應用程式需要以不可部分完成的方式執行一組檔案和登錄的更新。 此案例最常透過安裝程式應用程式達成,例如 Windows Installer。 如需 Windows Installer 的詳細資訊,請參閱 Windows Installer

管理一組結構化數據的應用程式

許多應用程式會管理一組不同類型的專屬數據結構,做為儲存數據的方法。 這些應用程式的重大挑戰是,如果在更新作業期間發生失敗,維護內部指標/參考的完整性。 建立此機制確實是「難題」,因此大部分的應用程式都會依賴真正的資料庫伺服器來管理其數據集。

協助管理結構化數據的兩個建議如下:

  • Microsoft 在 Windows 中提供 Extensible 儲存體 Engine (ESE) 收件匣,讓應用程式能夠執行交易的數據更新和擷取作業。 如需可延伸 儲存體 引擎 (ESE) 的詳細資訊,請參閱 https://msdn.microsoft.com/library/gg269259.aspx
  • 對於需要更強大、健全且可調整資料庫提供者的應用程式,建議客戶考慮使用 Microsoft SQL Server 提供的 Filestream 功能。 如需 SQL Filestreams 的詳細資訊,請參閱 https://technet.microsoft.com/library/bb933993.aspx

具有涉及本機 NTFS 磁碟區和外部 SQL 資料庫中數據表之檔案之交易的應用程式

有一個類別的應用程式有大型數據集需求,或需要在涉及外部資料庫和本機記憶體的作業中具有交易不可部分完成性。 在此案例中,強烈建議開發人員考慮使用 SQL Filestreams 來執行交易式檔案作業。 如需 SQL Filestreams 的詳細資訊,請參閱 https://technet.microsoft.com/library/bb933993.aspx

TxF 是一組複雜且細微的 API,第三方應用程式並不常使用。 Microsoft 強烈建議開發人員調查這些替代方法,而不是在其應用程式中建立 TxF 相依性,因為未來 Windows 版本可能無法使用這些 API,而且有更簡單的替代方法可達成許多 TxF 開發案例。