Sdílet prostřednictvím


Alternativy k používání transakčního systému souborů NTFS

Abstrakt

Microsoft důrazně doporučuje vývojářům prozkoumat použití probíraných alternativ (nebo v některých případech prozkoumat jiné alternativy) místo přijetí platformy rozhraní API, která nemusí být k dispozici v budoucích verzích Windows.

Úvod

TxF byl zaveden v systému Windows Vista jako prostředek k zavedení atomických transakcí souborů do Systému Windows. Umožňuje vývojářům systému Windows mít transakční atomicitu pro operace se soubory v transakcích s jedním souborem, v transakcích zahrnujících více souborů a v transakcích zahrnujících více zdrojů , jako je registr (prostřednictvím TxR) a databáze (například SQL). I když je TxF výkonnou sadou rozhraní API, v této platformě rozhraní API byl od windows Vista mimořádně omezený zájem vývojářů, a to především kvůli jeho složitosti a různým nuancí, které vývojáři potřebují zvážit jako součást vývoje aplikací. V důsledku toho Microsoft uvažuje o vyřazení rozhraní API TxF v budoucí verzi Windows, aby se zaměřil na vývoj a údržbu na další funkce a rozhraní API, které mají větší hodnotu pro větší většinu zákazníků. Další část popisuje ukázkové alternativní metody pro dosažení podobných výsledků jako TxF pro několik typů scénářů aplikace.

Alternativy k TxF podle scénáře

S výše popsanými omezeními by vývojáři měli prozkoumat alternativy TxF a pokrýt scénáře aplikací, které TxF nesplní. Zde je popsáno několik navrhovaných alternativ běžných použití TxF pro vývojáře, které je potřeba zvážit. Všimněte si, že tento seznam není vyčerpávající ani úplný.

Aplikace aktualizují jeden soubor s daty typu dokument

Mnoho aplikací, které pracují s daty typu "dokument-like", mají tendenci načíst celý dokument do paměti, pracovat s ním a pak je zase zapsat, aby se změny uložily. Potřebná atomicita spočívá v tom, že změny se buď zcela použijí, nebo vůbec nepoužijí, protože nekonzistentní stav způsobí poškození souboru. Běžným přístupem je zapsat dokument do nového souboru a potom nahradit původní soubor novým souborem. Jednou z metod, jak to udělat, je rozhraní API ReplaceFile.

Aplikace provádějící aktualizace více souborů nebo registru hive

Existuje mnoho aplikací, které potřebují atomicky provést aktualizaci sady souborů a registru. Tento scénář se nejčastěji dosahuje prostřednictvím instalační aplikace, jako je Instalační služba systému Windows. Další informace o Instalační službě systému Windows naleznete v tématu Instalační služba systému Windows.

Aplikace spravující sadu strukturovaných dat

Mnoho aplikací spravuje určitou sadu proprietárních datových struktur různých typů jako způsob ukládání dat. Důležitým problémem pro tyto aplikace je proces zachování integrity interních ukazatelů/odkazů v případě selhání během operace aktualizace. Vytvoření mechanismu pro toto je skutečně "náročný problém", a proto většina aplikací bude spoléhat na skutečný databázový server ke správě své datové sady.

Existují dva návrhy, které vám pomůžou se správou strukturovaných dat:

  • Microsoft poskytuje Extensible Storage Engine (ESE) jako součást Windows, což umožňuje aplikacím provádět transakční operace aktualizace a načítání dat. Další informace o rozšiřitelném modulu úložiště (ESE) najdete v tématu https://msdn.microsoft.com/library/gg269259.aspx.
  • U aplikací, které vyžadují výkonnějšího, robustnějšího a škálovatelného poskytovatele databáze, doporučujeme zákazníkům zvážit použití funkce Filestream, která je dostupná u Microsoft SQL Serveru. Další informace o souborových streamech SQL naleznete v tématu https://technet.microsoft.com/library/bb933993.aspx.

Aplikace s transakcemi zahrnujícími soubory na místním svazku NTFS a tabulkách v externí databázi SQL

Existují třídy aplikací, které mají buď velké potřeby datové sady, nebo musí mít transakční atomicitu v operaci zahrnující externí databázi a místní úložiště. V tomto scénáři důrazně doporučujeme, aby vývojáři zvážili použití sql Filestreams k provádění transakčních operací se soubory. Další informace o souborových streamech SQL naleznete v tématu https://technet.microsoft.com/library/bb933993.aspx.

TxF je složitá a nuancovaná sada rozhraní API, která se běžně nepoužívají v aplikacích třetích stran. S možností, že tato rozhraní API nemusí být v budoucích verzích Windows k dispozici, a skutečnost, že existuje jednodušší alternativní způsob, jak dosáhnout mnoha scénářů, pro které byl TxF vyvinut, Microsoft důrazně doporučuje vývojářům prozkoumat tyto alternativní prostředky místo vytvoření závislosti na TxF ve svých aplikacích.