Fundamentos da transação
As transações unem 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 são relacionadas e até mesmo interdependentes, de modo que você deseja evitar a criação de uma nova tabela, a menos que possa preenchê-la com dados. A execução de ambas as tarefas dentro do 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 anterior à 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 o papel das transações de missão crítica como proposições de tudo ou nada. Para obter mais informações sobre ACID, consulte Propriedades do ACID. Em resumo, o ACID garante que um conjunto de tarefas relacionadas seja bem-sucedido ou fracassado como uma unidade. Na terminologia de processamento de transações, a transação é confirmada ou anulada. 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 apesar de falhas do sistema ou outros imprevistos. Se mesmo um único participante não fizer essa garantia, toda a transação falhará. Todas as alterações nos dados dentro do escopo da transação são revertidas para um ponto de ajuste específico.
Uma transação pode ser confinada a um único recurso de dados, como um banco de dados ou fila de mensagens. Nesse cenário, a transação local é gerenciada pelo Transaction Manager fornecido pela 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 aprovação ou falha. Nesse cenário, as transações são coordenadas pelo Microsoft Distributed Transaction Coordinator (MSDTC) que reside em cada sistema.
Quando você desenvolve um aplicativo transacional usando as classes fornecidas pela System.Transactions, você não precisa se preocupar com o tipo de transações que você precisa, ou com o gerenciador de transações envolvido. A System.Transactions infraestrutura gere-os automaticamente por si.
Ao criar uma transação, você pode especificar o nível de isolamento que se aplica à transação. O nível de isolamento, definido pelo enum, determina o IsolationLevel nível de acesso que outras transações terão aos dados afetados pela sua 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 por System.Transactions discute os recursos que você pode usar para escrever um aplicativo transacional usando o System.Transactions namespace.