Partager via


Quand utiliser NTFS transactionnel

Une application peut utiliser ntfs transactionnel (TxF) pour préserver l’intégrité des données sur le disque lors de conditions d’erreur inattendues. En général, une application doit envisager d’utiliser TxF si l’application vide les fichiers et utilise d’autres techniques pour maintenir l’intégrité des données. TxF peut améliorer les performances et simplifier le code de gestion des erreurs de l’application tout en améliorant la récupération et la fiabilité des erreurs. Les sections suivantes de cette rubrique fournissent des exemples de scénarios d’utilisation de TxF.

Mise à jour d’un fichier

La mise à jour d’un fichier est une opération courante et généralement simple. Toutefois, si le système ou l’application échoue alors qu’une application met à jour les informations sur un disque, le résultat peut être catastrophique, car les données utilisateur peuvent être endommagées par une opération de mise à jour de fichier partiellement terminée. Les applications robustes effectuent souvent des séquences complexes de copies de fichiers et de renommages de fichiers pour s’assurer que les données ne sont pas endommagées en cas de défaillance d’un système.

TxF simplifie la protection des opérations de mise à jour de fichiers contre les défaillances du système ou de l’application. Pour mettre à jour un fichier en toute sécurité, l’application ouvre le fichier en mode traité, effectue les mises à jour nécessaires, puis valide la transaction. Si le système ou l’application échoue pendant la mise à jour du fichier, TxF restaure automatiquement le fichier à l’état qu’il avait avant le début de la mise à jour du fichier, ce qui évite l’endommagement du fichier.

Mises à jour multi-fichiers

TxF est encore plus important lorsqu’une seule opération logique affecte plusieurs fichiers. Par exemple, si vous souhaitez utiliser un outil pour renommer l’une des pages HTML ou ASP d’un site web, un outil bien conçu corrigerait également tous les liens pour utiliser le nouveau nom de fichier. Toutefois, un échec au cours de cette opération laisse le site web dans un état incohérent, certains liens faisant toujours référence à l’ancien nom de fichier. En rendant l’opération de renommage de fichier et l’opération de correction de lien en une seule transaction, TxF garantit que le changement de nom de fichier et le correctif de lien réussissent ou échouent en tant qu’opération unique.

Mises à jour simultanés cohérents

TxF isole les transactions simultanées. Si une application ouvre un fichier pour une lecture transactionnelle alors qu’une autre application a le même fichier ouvert pour une mise à jour transactionnelle, TxF isole les effets des deux transactions l’une de l’autre. En d’autres termes, le lecteur transactionnel affiche toujours une version unique et cohérente du fichier, même si ce fichier est en cours de mise à jour par une autre transaction.

Une application peut utiliser cette fonctionnalité pour permettre aux clients d’afficher des fichiers pendant que d’autres clients effectuent des mises à jour. Par exemple, un serveur web transactionnel peut fournir une vue unique et cohérente des fichiers, tandis qu’un autre outil met à jour simultanément ces fichiers.

Notes

TxF ne prend pas en charge les mises à jour simultanées par plusieurs enregistreurs dans différentes transactions. TxF ne prend en charge qu’un seul enregistreur avec plusieurs lecteurs simultanés et cohérents.

 

Coordination avec d’autres gestionnaires de ressources traités

Les transactions utilisées avec des systèmes de fichiers traités peuvent également être utilisées avec le registre traité. Mises à jour au fichier et au registre sont coordonnés avec une seule transaction.

En utilisant des transactions DTC (Distributed Transaction Coordinator ) ou System.Transactions, les mises à jour apportées à SQL, MSMQ et à d’autres ressources transactionnelles peuvent être coordonnées avec les mises à jour des fichiers traités. Pour plus d’informations, consultez IKernelTransaction de DTC.

Scénarios non pris en charge

TxF ne prend pas en charge les scénarios de transaction suivants :

  • Transactions sur des volumes réseau, par exemple sur des partages de fichiers. TxF n’est pas pris en charge par les protocoles CIFS/SMB.
  • Transactions sur n’importe quel système de fichiers autre que NTFS.
  • Opérations traitées sur des fichiers mis en cache par mise en cache côté client.
  • Accès aux fichiers à l’aide d’ID d’objet.
  • N’importe quel scénario d’enregistreur partagé.
  • Toute situation où un fichier est ouvert pendant une période prolongée (jours ou semaines).