Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção descreve como você pode usar os recursos fornecidos pelo System.Transactions namespace para gravar 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 ao dar suporte a transações iniciadas no SQL Server, ADO.NET, MSMQ (Enfileiramento de Mensagens) e no MSDTC (Coordenador de Transações Distribuídas da Microsoft). O System.Transactions namespace fornece tanto um modelo de programação explícito baseado na classe Transaction, quanto um modelo de programação implícito usando a classe TransactionScope, 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 Escrever um aplicativo transacional.
O System.Transactions namespace também fornece tipos para você implementar um gerenciador de recursos. Um gerenciador de recursos gerencia dados duráveis ou voláteis usados em uma transação e trabalha em cooperação com o gerenciador de transações para fornecer ao aplicativo uma garantia de atomicidade e isolamento. O gerenciador de transações fornecido pela infraestrutura dá suporte a System.Transactions transações que envolvem vários recursos voláteis ou um único recurso durável. 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 transações locais de forma transparente para transações distribuídas coordenando com um gerenciador de transações baseado em disco como o DTC, quando um gerenciador de recursos durável adicional se insere em uma transação. Há duas maneiras principais de a System.Transactions infraestrutura fornecer um desempenho aprimorado.
Escalonamento dinâmico, o que garante que o System.Transactions infra-estrutura apenas emprega o MSDTC quando uma transação engloba vários recursos distribuídos. Para obter mais informações sobre escalonamento dinâmico. consulte o tópico Escalonamento de Gerenciamento de Transações .
Podem ser promovidas inscrições, que permite que um recurso, como um banco de dados, apropriar-se da transação se for a única entidade participa da transação. Posteriormente, se necessário, o System.Transactions infra-estrutura ainda pode escalonar o gerenciamento da transação para o MSDTC. Isso reduz ainda mais a chance de usar o MSDTC. As Inscrições Passíveis de Promoção são abordadas detalhadamente no tópicoOtimização usando Confirmação de Fase Única e Notificação de Fase Única Passível de Promoção.
O System.Transactions namespace define três níveis de confiança - AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) e confiança total - que restringem o acesso aos tipos de recursos que ele 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 no acesso a recursos.
Nesta seção
Escrevendo um aplicativo transacional
O System.Transactions namespace fornece dois modelos para a criação de aplicativos transacionais. Implementar uma transação implícita usando o Escopo da Transação descreve como o System.Transactions namespace dá suporte à criação de transações implícitas usando a TransactionScope classe.
Implementar uma transação explícita usando CommittableTransaction descreve como o System.Transactions namespace dá suporte à criação de transações explícitas usando a CommittableTransaction classe.
Para obter tópicos adicionais que abrangem o desenvolvimento de um aplicativo transacional, consulte Desenvolvendo 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 a inscrição de um recurso, a confirmação de uma transação, a recuperação após a falha e as práticas recomendadas de otimização.