Cuándo usar NTFS transaccional

Una aplicación puede usar NTFS transaccional (TxF) para conservar la integridad de los datos en el disco durante condiciones de error inesperadas. En general, una aplicación debe considerar el uso de TxF si la aplicación vacía los archivos y usa otras técnicas para mantener la integridad de los datos. TxF puede funcionar mejor y simplificar el código de control de errores de la aplicación, a la vez que mejora la recuperación y confiabilidad de los errores. En las secciones siguientes de este tema se proporcionan ejemplos de escenarios para usar TxF.

Actualización de un archivo

La actualización de un archivo es una operación común y normalmente sencilla. Sin embargo, si se produce un error en el sistema o la aplicación mientras una aplicación actualiza información en un disco, el resultado puede ser catastrófico, ya que los datos del usuario pueden estar dañados por una operación de actualización de archivos que se completa parcialmente. Las aplicaciones sólidas suelen realizar secuencias complejas de copias de archivos y cambio de nombre de archivo para asegurarse de que los datos no están dañados si se produce un error en un sistema.

TxF facilita que una aplicación proteja las operaciones de actualización de archivos frente a errores del sistema o de la aplicación. Para actualizar un archivo de forma segura, la aplicación abre el archivo en modo de transacción, realiza las actualizaciones necesarias y, a continuación, confirma la transacción. Si se produce un error en el sistema o la aplicación durante la actualización de archivos, TxF restaura automáticamente el archivo al estado que tenía antes de que se iniciara la actualización de archivos, lo que evita daños en los archivos.

Novedades de varios archivos

TxF es aún más importante cuando una sola operación lógica afecta a varios archivos. Por ejemplo, si desea usar una herramienta para cambiar el nombre de una de las páginas HTML o ASP de un sitio web, una herramienta bien diseñada también corregiría todos los vínculos para usar el nuevo nombre de archivo. Sin embargo, un error durante esta operación deja el sitio web en un estado incoherente, con algunos de los vínculos que todavía hacen referencia al nombre de archivo antiguo. Al realizar la operación de cambio de nombre de archivo y la operación de corrección de vínculos una sola transacción, TxF garantiza que el cambio de nombre del archivo y la corrección del vínculo se realicen correctamente o produzcan un error como una sola operación.

Novedades simultáneos coherentes

TxF aísla las transacciones simultáneas. Si una aplicación abre un archivo para una lectura transaccional mientras otra aplicación tiene el mismo archivo abierto para una actualización transaccional, TxF aísla los efectos de las dos transacciones entre sí. En otras palabras, el lector transaccional siempre ve una única versión coherente del archivo, incluso mientras ese archivo está en proceso de ser actualizado por otra transacción.

Una aplicación puede usar esta funcionalidad para permitir a los clientes ver archivos mientras otros clientes realizan actualizaciones. Por ejemplo, un servidor web transaccional puede proporcionar una única vista coherente de los archivos, mientras que otra herramienta actualiza simultáneamente esos archivos.

Nota

TxF no admite actualizaciones simultáneas de varios escritores en distintas transacciones. TxF solo admite un único escritor con varios lectores simultáneos y coherentes.

 

Coordinación con otros administradores de recursos con transacciones

Las transacciones usadas con sistemas de archivos con transacciones también se pueden usar con el registro de transacciones. Novedades al archivo y el registro se coordinan con una sola transacción.

Mediante transacciones de Coordinador de transacciones distribuidas (DTC) o System.Transactions, las actualizaciones realizadas en SQL, MSMQ y otros recursos transaccionales se pueden coordinar con actualizaciones de archivos de transacción. Para obtener más información, consulte IKernelTransaction de DTC.

Escenarios no admitidos

TxF no admite los siguientes escenarios de transacción:

  • Transacciones en volúmenes de red, por ejemplo, en recursos compartidos de archivos. TxF no es compatible con los protocolos CIFS/SMB.
  • Transacciones en cualquier sistema de archivos que no sea NTFS.
  • Operaciones de transacción en archivos almacenados en caché por almacenamiento en caché del lado cliente.
  • Acceso a archivos mediante identificadores de objeto.
  • Cualquier escenario de escritor compartido.
  • Cualquier situación en la que se abra un archivo durante un largo período de tiempo (días o semanas).