Partilhar via


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.

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.