Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que trata o artigo

É fundamental e indispensável que um projeto de software de qualidade contenha alguns atributos que garantam aos seus usuários maior segurança e confiabilidade, pois um erro de consistência nas informações de um sistema pode em muitas circunstâncias trazer incalculáveis prejuízos. Com o objetivo de evitar falhas em operações de missão crítica o uso de transações é muito empregado atualmente na indústria do software e este artigo traz estes conceitos aplicados com o uso do Windows Communication Foundation.

Para que serve

De forma bem sucinta podemos descrever que uma transação é uma operação ou uma série de operações que transformam dados de um estado consistente para outro, como uma exclusiva unidade de trabalho. A ideia por detrás disto é garantir consistência e integridade das informações manipuladas e não permitir que dados fiquem parcialmente afetados. Um processo transacional também garante que se alguma falha ocorrer durante o processo de manipulação de dados tudo deve voltar ao seu estado original.

Em que situação o tema é útil

Em qualquer situação que for necessário realizar múltiplas operações de manipulação de dados em que o sucesso somente é garantido se nenhuma falha sistêmica ocorrer, o uso de transações é indicado. Atualmente no mundo corporativo o uso de transações é bastante requerido, principalmente em aplicações que trabalham com operações financeiras.

Resumo do DevMan

O Windows Communication Foundation (WCF) é um modelo de programação unificado criado pela Microsoft para facilitar a criação de aplicações empregando os conceitos da arquitetura orientada a serviços (SOA). O WCF permite que desenvolvedores criem aplicações distribuídas e também acrescenta diversos recursos, tal como o suporte transacional. Através de um exemplo de uma aplicação bancária o leitor descobrirá como é simples empregar estes conceitos utilizando o WCF.

O artigo inicia com uma breve descrição da infraestrutura utilizada pelo WCF para o suporte a transações, estes conceitos são importantes para contextualizar a respeito do funcionamento da tecnologia. Em seguida será construída uma aplicação de exemplo que empregará os recursos abordados por este artigo. Este projeto consiste em uma aplicação que realiza operações financeiras de saque, depósito, transferência e saldo. A solução é composta por dois projetos, onde o primeiro é um WCF Service Library e o outro Console Application que atuará como cliente do serviço WCF. Neste exemplo será simulada uma situação em que uma transferência será malsucedida para observar como a infraestrutura transacional do WCF irá de forma totalmente transparente manter a integridade dos dados, retornando ao estado original os dados que foram parcialmente alterados pela operação de transferência.

MSDTC

O serviço Microsoft Distributed Transactions Coordinator é um componente nativo do Windows que é responsável por coordenar transações envolvendo recursos tais como banco de dados, filas de mensagens (MSMQ), sistema de arquivos etc. Quando se abre uma transação utilizando os recursos do WCF de forma implícita o controle da transação é transferido para o MSDTC que será responsável pelo gerenciamento da transação. O MSDTC para efetuar seu controle transacional utiliza alguns protocolos, tais como OLE-Transactions, XA ou X/Open, WS-Atomic etc. No exemplo será utilizado o OLE-Transactions que é um protocolo desenvolvido pela Microsoft e é recomendado quando se tem um cenário onde toda a infraestrutura é baseada em soluções Microsoft. No caso de um cenário com soluções heterogêneas é necessário adotar outro protocolo tal como XA ou WS-Atomic. O mais interessante aqui é que a tecnologia suporta transações com diversos fabricantes de banco de dados, desta forma é possível ter uma solução distribuída em mais de um servidor, onde informações de um banco de dados Oracle fossem transacionadas com um banco de dados SQL Server, DB2, Sybase, Informix ou qualquer outro que suporte os protocolos utilizados pelo MSDTC de forma totalmente transparente dentro de um serviço WCF.

...
Quer ler esse conteúdo completo? Tenha acesso completo