Compartilhar via


Quando usar o NTFS transacional

Um aplicativo pode usar o TxF (NTFS transacional) para preservar a integridade dos dados no disco durante condições de erro inesperadas. Em geral, um aplicativo deve considerar o uso de TxF se o aplicativo estiver liberando arquivos e usando outras técnicas para manter a integridade dos dados. O TxF pode ter um desempenho melhor e simplificar o código de tratamento de erros do aplicativo, melhorando a recuperação de erros e a confiabilidade. As seções a seguir neste tópico fornecem exemplos de cenários para você usar o TxF.

Atualizando um arquivo

A atualização de um arquivo é uma operação comum e normalmente simples. No entanto, se o sistema ou o aplicativo falhar enquanto um aplicativo estiver atualizando informações em um disco, o resultado poderá ser catastrófico, pois os dados do usuário podem ser corrompidos por uma operação de atualização de arquivo parcialmente concluída. Aplicativos robustos geralmente executam sequências complexas de cópias de arquivo e renomeações de arquivo para garantir que os dados não sejam corrompidos se um sistema falhar.

O TxF simplifica a proteção de operações de atualização de arquivo contra falhas do sistema ou do aplicativo. Para atualizar um arquivo com segurança, o aplicativo abre o arquivo no modo transacionado, faz as atualizações necessárias e confirma a transação. Se o sistema ou o aplicativo falhar durante a atualização de arquivo, o TxF restaurará automaticamente o arquivo para o estado que ele tinha antes do início da atualização do arquivo, o que evita a corrupção de arquivos.

Atualizações de vários arquivos

O TxF é ainda mais importante quando uma única operação lógica afeta vários arquivos. Por exemplo, se você quiser usar uma ferramenta para renomear uma das páginas HTML ou ASP em um site, uma ferramenta bem projetada também corrigirá todos os links para usar o novo nome de arquivo. No entanto, uma falha durante essa operação deixa o site em um estado inconsistente, com alguns dos links ainda se referindo ao nome do arquivo antigo. Ao tornar a operação de renomeação de arquivo e a operação de correção de link uma única transação, o TxF garante que a renomeação de arquivo e a correção de link tenham êxito ou falhem como uma única operação.

Atualizações Simultânea Consistente

O TxF isola transações simultâneas. Se um aplicativo abrir um arquivo para uma leitura transacional enquanto outro aplicativo tiver o mesmo arquivo aberto para uma atualização transacional, o TxF isolará os efeitos das duas transações umas das outras. Em outras palavras, o leitor transacional sempre exibe uma única versão consistente do arquivo, mesmo quando esse arquivo está em processo de atualização por outra transação.

Um aplicativo pode usar essa funcionalidade para permitir que os clientes exibam arquivos enquanto outros clientes fazem atualizações. Por exemplo, um servidor Web transacional pode fornecer uma exibição única e consistente de arquivos, enquanto outra ferramenta atualiza simultaneamente esses arquivos.

Observação

O TxF não dá suporte a atualizações simultâneas por vários gravadores em transações diferentes. O TxF dá suporte apenas a um único gravador com vários leitores simultâneos e consistentes.

 

Coordenando com outros gerenciadores de recursos transacionados

As transações usadas com sistemas de arquivos transacionados também podem ser usadas com o registro transacionado. Atualizações para o arquivo e o registro são coordenados com uma única transação.

Usando transações de DTC ( Coordenador de Transações Distribuídas ) ou System.Transactions, as atualizações feitas no SQL, MSMQ e outros recursos transacionais podem ser coordenadas com atualizações de arquivo transacionadas. Para obter mais informações, consulte IKernelTransaction do DTC.

Cenários sem suporte

O TxF não dá suporte aos seguintes cenários de transação:

  • Transações em volumes de rede, por exemplo, em compartilhamentos de arquivos. Não há suporte para TxF nos protocolos CIFS/SMB.
  • Transações em qualquer sistema de arquivos diferente do NTFS.
  • Operações transacionadas em arquivos armazenados em cache no lado do cliente.
  • Acesso a arquivos usando IDs de objeto.
  • Qualquer cenário de gravador compartilhado.
  • Qualquer situação em que um arquivo é aberto por um longo período de tempo (dias ou semanas).