Recursos fornecidos pelo System.Transactions
Esta seção descreve como você pode usar os recursos fornecidos pelo System.Transactions namespace para escrever seu próprio aplicativo transacional e gerenciador de recursos. Especificamente, esta seção aborda como criar e participar de uma transação (local ou distribuída) com um ou vários participantes.
Visão geral de System.Transactions
A infraestrutura fornecida pelas classes no namespace torna a System.Transactions programação transacional simples e eficiente, dando suporte a transações iniciadas no SQL Server, ADO.NET, Message Queuing (MSMQ) e Microsoft Distributed Transaction Coordinator (MSDTC). O System.Transactions namespace fornece um modelo de programação explícito baseado na Transaction classe, bem como um modelo de programação implícito usando a TransactionScope classe, no qual as transações são gerenciadas automaticamente pela infraestrutura. Para obter mais informações sobre como criar um aplicativo transacional usando esses dois modelos, consulte Escrevendo um aplicativo transacional.
O System.Transactions namespace também fornece tipos para você implementar um gerenciador de recursos. Um gerente de recursos gerencia dados duráveis ou voláteis usados em uma transação e trabalha em cooperação com o gerente de transações para fornecer ao aplicativo uma garantia de atomicidade e isolamento. O gestor de System.Transactions transações fornecido pela infraestrutura suporta transações que envolvem vários recursos voláteis ou um único recurso duradouro. Para obter mais informações sobre como implementar um gerenciador de recursos, consulte Implementando um gerenciador de recursos.
O gerenciador de transações também escalona de forma transparente as transações locais para transações distribuídas, coordenando-se com um gerenciador de transações baseado em disco como o DTC, quando um gerenciador de recursos duráveis adicional se alista com uma transação. Existem duas formas principais de a System.Transactions infraestrutura proporcionar um desempenho melhorado.
Escalonamento dinâmico, que garante que a infraestrutura só envolva System.Transactions o MSDTC quando uma transação se estende por vários recursos distribuídos. Para obter mais informações sobre escalonamento dinâmico. consulte o tópico Escalonamento de gerenciamento de transações.
Alistamentos promocionais, que permitem que um recurso, como um banco de dados, assuma a propriedade da transação se for a única entidade participante da transação. Mais tarde, se necessário, a System.Transactions infraestrutura ainda pode escalar o gerenciamento da transação para o MSDTC. Isso reduz ainda mais a chance de usar o MSDTC. Os Alistamentos Promocionais são abordados em profundidade no tópicoOtimização usando Confirmação de Fase Única e Notificação Promocional de Fase Única.
O System.Transactions namespace define três níveis de confiança - AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) e full trust - que restringem o acesso aos tipos de recursos que expõe. Para obter mais informações sobre os vários níveis de confiança, consulte Níveis de confiança de segurança em Acesso a recursos.
Nesta secção
Escrevendo um aplicativo transacional
O System.Transactions namespace fornece dois modelos para criar aplicativos transacionais. A implementação de uma transação implícita usando o escopo da transação descreve como o namespace oferece suporte à System.Transactions criação de transações implícitas usando a TransactionScope classe.
Implementando uma transação explícita usando CommittableTransaction descreve como o namespace dá suporte à System.Transactions criação de transações explícitas usando a CommittableTransaction classe.
Para obter tópicos adicionais sobre como escrever um aplicativo transacional, consulte Escrevendo um aplicativo transacional.
Implementando um gerenciador de recursos
Para implementar um gerenciador de recursos que possa participar de uma transação, consulte Implementando um Gerenciador de Recursos. Esta seção aborda o alistamento de um recurso, a confirmação de uma transação, a recuperação após falha e as práticas recomendadas de otimização.