Transações com .NET 2.0: Saiba como funciona o System.Transactions

Neste artigo, exploraremos as funcionalidades oferecidas pelo framework para a utilização de transações de forma implícita e explícita.

Clique aqui para ler esse artigo em PDF.

Clique aqui paraler todos os artigos desta edição

ADO.NET

Transações com .NET 2.0

Saiba como funciona o System.Transactions

 

Quando você realiza uma compra pela internet, vários passos devem ser realizados para que a venda seja efetivada. Esses passos incluem, por exemplo, a verificação de disponibilidade do produto solicitado no estoque da loja virtual, validação e débito do valor faturado em seu cartão de crédito, baixa no estoque da loja e encaminhamento do produto para envio.

Uma falha em qualquer um dos passos deve fazer com que o pedido seja cancelado, além de desfazer todos os passos anteriores ao erro, caso contrário seu cartão poderia ser debitado mesmo sem a finalização do pedido. Nesse tipo de situação o controle transacional é fundamental.

A utilização de transações está sempre associada ao conceito de atomicidade, ou seja: num conjunto de N passos, cada um dos passos só poderá ser confirmado caso todos os outros tenham sido executados com sucesso também. O .NET Framework 2.0 oferece uma arquitetura completa para a implementação de transações através do namespace System.Transactions, suportando transações com SQL Server, ADO.NET, filas de mensagens (MSMQ) e do próprio coordenador de transações da Microsoft, o MSDTC (Microsoft Distributed Transaction Coordinator), nativamente.

Neste artigo, exploraremos as funcionalidades oferecidas pelo framework para a utilização de transações de forma implícita e explícita. Paralelamente, desenvolveremos uma aplicação que realiza a atualização de uma mesma base de dados em dois servidores distintos, demonstrando na prática as funcionalidades descritas ao longo do texto.

 

Criando a aplicação

Para o entendimento paralelo de teoria e prática na utilização de transações, criaremos uma aplicação que realiza a atualização de algumas informações na tabela Products do banco de dados Northwind.

Para caracterização de um conjunto de passos a serem executados, exigindo controle transacional, trabalharemos com dois servidores distintos, cada um com sua cópia do banco de dados: uma instância SQL Server 2000 e outra do SQL Server 2005.

 

Nota: Apesar deste artigo utilizar conexões a bancos de dados distintos, o mesmo também pode ser desenvolvido utilizando um único servidor, desde que sejam criadas conexões a dois bancos de dados diferentes.

 

Abra o Visual Studio 2005 e clique em File>New>Project. Na opção Visual C#>Windows, selecione o item Windows Application. Dê o nome de “TransactionsDotNetMagazine” ao projeto e clique em OK.

Criado o projeto, renomeie o Form1.cs para “FrmTransactions.cs”, e crie os componentes de interface da maneira indicada pela Figura 1.

 

Figura 1. Layout e componentes da classe FrmTransactions

 

Ainda no Solution Explorer, clique com o botão direito em References e selecione a opção Add Reference. Na aba .NET, selecione o System.Transactions, clicando em OK na seqüência.

Com os componentes dispostos e devidamente configurados, partiremos para o código. O primeiro passo é fazer com que o grdProdutos seja populado. Para isso, criaremos o método CarregarDados, que será o responsável por consultar os dados necessários na tabela Products e associá-los ao grdProdutos. A chamada ao método será feita no construtor do formulário, como mostra a " [...] continue lendo...

Artigos relacionados