Como utilizar o Distributed Transaction Coordinator (DTC) ?


Transações Atômicas com o Distributed Transaction Coordinator (DTC)

 O que é DTC – Distributed Transaction Coordinator?

                O DTC é uma infraestrutura distribuída de serviços para realização de transações. Ele está disponível no Windows Server 2003 SP1 ou superior. O DTC é especialmente útil em cenários distribuídos com serviços conectados, diferentes bancos de dados, transações com arquivos em disco, message queues entre outros.


Porque utilizar o DTC?

                Quando se cria uma aplicação que persiste dados em banco de dados, fatalmente será necessário o uso de transações atômicas, utilizando BEGIN TRANSACTION, ROLLBACK, COMMIT. Quando se guarda arquivos em disco isto é um pouco mais complicado porque normalmente é tratado manualmente. Se der algum tipo de falha o programador deve saber voltar o ambiente para o último estado estável.  Em cenários com múltiplos bancos de dados ou com aplicações distribuídas em serviços COM, COM+, WebServices ou quaisquer outras tecnologias, o DTC é bastante relevante.
                A Microsoft e empresas terceiras criaram várias aplicações transacionais que implementam o DTC. Desta forma, tanto o SQL Server 2008 quanto o Oracle 9i funcionam de maneira distribuída com o DTC.


Como instalar o DTC?

                O Distributed Transaction Coordinator deve ser configurado em todas as maquinas que envolvam a transação distribuída. Numa aplicação distribuída em 3 camadas, tanto a maquina com a camada de apresentação, quando a de negócios quanto a maquina com o banco de dados devem estar devidamente configuradas.
                A Seguir pode-se ver como configurar o DTC em 6 passos, divididos em 2 partes. A configuração vista a seguir é padrão. Caso existam necessidades específicas de login ou outros detalhes, verifique a documentação oficial em:

1 – Como configurar o DTC – Distributed Transaction Coordinator?

1.1 – Vá no Painel de Controle, Administrative Tools, Component Services

Figura 1- Painel de Controle - Component  Services
  
1.2 – No Component Services, expanda a arvore:
Component Services > Computers > My Computer > Local DTC.
Clique com o botão direito em Local DTC. Após, clique em propriedades.

Figura 2 - Encontrando o DTC no Component Services
 
1.3 – Na tela de propriedades do Local DTC, vá para a guia Security

Figura 3 - Abrindo as propriedades do Component Services

1.4 – Na guia Security do Local DTC, Marque as propriedades abaixo:
·         Network DTC Access
·         Cliente and Administration
o   Allow Remote Clients
o   Allow Remote Administration (não é obrigatório)
·         Transaction Manager Communication
o   Allow Inbound
o   Allow Outbound
o   Mutual Authentication Required
·         Enable SNA LU 6.2 Transactions
Mantenha a área de login, DTC Logon Account, com o usuário padrão.

Figura 4 - Configurando o DTC


2 – Como liberar o Firewall para o DTC – Distributed Transaction Coordinator?
Após configurar o DTC é necessária sua liberação no Firewall de todas as maquinas envolvidas na transação.

2.1 – Vá no Painel de Controle e abra o Windows Firewall. Clique em ‘Allow a program or feature through Windows Firewall’
Figura 5 - Abrindo as configurações do Firewall



2.2 – Aparecerá um tela com uma lista de programas. Selecione o ‘Distributed Transaction Coordinator’, conforme a figura abaixo.
Figura 6 - Criando uma exceção para o uso do DTC no Firewall

Como utilizar o DTC em uma aplicação?

Num próximo Tópico eu exploro os detalhes de como trabalhar Desenvolvendo uma transação que utilize a infraestrutura do Distributed Transaction Coordinator (DTC). Para o momento, deixo o link do MSDN para o classe TransactionScope, base para este cenário: http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx

2 comentários: