5 août
Gerenciando Transações com Trasaction Scope no Asp.Net
Introdução
Neste artigo vou explicar como utilizar o Transaction Scope, que é uma ferramenta que pode ajudar muito no controle de transações de sua aplicação. Também vou mostrar a configuração que deverá ser feita nos servidores para que ele possa funcionar adequadamente, pois muitas pessoas se esquecem deste passo e acabam tendo inúmeros problemas na implemen-tação da funcionalidade em produção ou mesmo no ambiente de teste e desenvolvimento.
O TransactionScope
O .NET Framework 2.0 inclui o namespace System.Transactions que dá um grande suporte a transações distribuídas geren-ciadas pelo Transaction Manager, incluindo Banco de Dados e Serviços de Mensagens(message queues).
O namespace System.Transactions define a classe TransactionScope, que cria e gerencia transações distribuídas.
Devido a sua facilidade de utilização e eficiência, é recomendado que você utilize a classe de TransactionScope para facilitar o controle de transações em sua aplicação, sem que seja necessário (você precise) interagir com a operação propriamente dita.
O TransactionScope pode selecionar e gerenciar o ambiente de Transações automaticamente.
O System.Transactions fornece uma estrutura de transações totalmente integrada ao .NET Framework, mas não se limitando ao ADO.NET.
Utilizando o TransactionScope
O TransactionScope é iniciado quando se cria um novo objeto TransactionScope.
É altamente recomendado que a declaração do scope seja feito dentro da diretiva using, pois ela garante que o objeto dure somente o tempo necessário para sua utilização.
Vamos aos exemplos:
Adicione a referência no projeto ao System.Transaction.
Inclua a referencia na Classe:
Incluindo o TransactionScope no Bloco de Codigo:
Completando a transação:
Para “commitar” a transação inserimos uma instrução que será a ultima linha do using.
Obs: Caso ocorra algum problema na execução do bloco de código (dentro do using ) automaticamente a transação é abor-tada e o Transaction Maneger executa o Roll Back das alterações.
RollBack:
O RollBack é executado automaticamente quando ocorrer qualquer exceção no bloco que está sendo executado dentro da transação.
Exemplo de utilização:
No cenário abaixo, temos uma transação onde gravamos informações coletadas separadamente (endereço, dados pessoais, etc). Com o Transaction Scope temos a liberdade de gravar as informações separadamente. Suponhamos que estamos gravan-do o cliente e após gravar o Endereço e o Telefone do Cliente da um problema na gravação dos Dados pessoais do mesmo sendo assim o transactionScope faz o Roll Back de tudo! Voltando o objeto ao seu estado original.
Caso ocorra algum erro durante a gravação de algum desses metodos o TrasactionScope faz o RollBack de tudo, como dito anteriormente. Não havendo nenhum problema a transação é completada normalmente.
A configuração do ambiente
Para que o transactionScope funcione no servidor precisamos fazer algumas configurações, mais somente se o servidor for XP sp2 pra cima! Em Win2000 não precisamos mexer em nada!
Menu Iniciar/Configurações/Painel de Controle/Ferramentas administrativas.
Abra o Serviço de Componentes (como na figura abaixo):
Clique com o botão direito do Mouse em Meu Computador(Como na figura Abaixo) e selecione a opção Propriedades.
Na janela Clique na aba MSDTC e depois em Configurações de Segurança.
Habilite as opções:
- Acesso ao DTC de Rede. - Permitir Clientes Remotos - Permitir Administração Remota - Permitir Entrada - Permitir Saída - Nenhuma Autenticação Necessária - Permitir Transações do Protocolo TIP - Habilitar Transações XA (como a figura abaixo)
Lembrando que essa configuração só deve ser feita em ambientes com sistema operacional Win XP ou Win Server2003. E a mesma deve ser feita tanto no servidor de WEB quanto no de Banco de Dados.
Espero que este artigo contribua com o seu crescimento.
Bons Códigos...
Fabiano Belmonte