Compartilhar via


Conceitos básicos da transação

As transações associam várias tarefas. Por exemplo, imagine que um aplicativo executa duas tarefas. Primeiro, ele cria uma nova tabela em um banco de dados. Em seguida, ele chama um objeto especializado para coletar, formatar e inserir dados na nova tabela. Essas duas tarefas estão relacionadas e até interdependentes, de modo que você deseja evitar a criação de uma nova tabela, a menos que você possa preenchê-la com dados. Executar ambas as tarefas no escopo de uma única transação impõe a conexão entre elas. Se a segunda tarefa falhar, a primeira tarefa será revertida para um ponto antes da criação da nova tabela.

Para garantir um comportamento previsível, todas as transações devem possuir as propriedades ACID básicas (atômicas, consistentes, isoladas e duráveis). Essas propriedades reforçam a função de transações de missão crítica como propostas de tudo ou nada. Para obter mais informações sobre ACID, consulte Propriedades ACID. Em resumo, ACID garante que um conjunto de tarefas relacionadas seja bem-sucedido ou falhe como uma unidade. Na terminologia de processamento de transações, a transação é completada ou abortada. Para que uma transação seja confirmada, todos os participantes devem garantir que qualquer alteração nos dados será permanente. As alterações devem persistir mesmo que haja falhas do sistema ou outros eventos imprevisíveis. Se um único participante não conseguir fazer essa garantia, toda a transação falhará. Todas as alterações nos dados no escopo da transação são revertidas para um ponto específico definido.

Uma transação pode ser confinada a um único recurso de dados, como um banco de dados ou uma fila de mensagens. Nesse cenário, a transação local é gerenciada pelo Gerenciador de Transações fornecido pelo System.Transactions , que gera ganho de desempenho. Controladas pelo recurso de dados, essas transações são eficientes e fáceis de gerenciar.

As transações também podem abranger vários recursos de dados. As transações distribuídas oferecem a capacidade de incorporar várias operações distintas que ocorrem em sistemas diferentes em uma única ação de passagem ou falha. Nesse cenário, as transações são coordenadas pelo MSDTC (Coordenador de Transações Distribuídas da Microsoft) que reside em cada sistema.

Ao desenvolver um aplicativo transacional usando as classes fornecidas por System.Transactions, você não precisa se preocupar com que tipo de transações você precisa ou com o gerenciador de transações envolvido. O System.Transactions infra-estrutura gerencia automaticamente para você.

Ao criar uma transação, você pode especificar o nível de isolamento que se aplica à transação. O nível de isolamento, definido pela IsolationLevel enumeração, determina qual nível de acesso outras transações terão para os dados afetados pela transação.

Você pode criar transações usando ADO.NET System.EnterpriseServicesou o modelo de programação transacional fornecido pelo System.Transactions namespace. O tópico Recursos Fornecidos pelo System.Transactions discute os recursos que você pode usar para gravar um aplicativo transacional usando o System.Transactions namespace.

Consulte também