Propagação de Transação entre Cliente e Serviço Asmx ou WCF basicHttpBinding

by Admin 11. December 2009 00:01

Faz um tempo que por aqui nao passo, vamos lá

Quando falamos de Serviço na plataforma .NET duas coisas

1- vem a cabeça o muito usado arquivo .asmx onde as mensagens eram enviadas por http serializado:

2- WCF (Windows Communication Foundation), tecnologia mais recente mas com grande aceitação por aceitar vários protocolos, tipos de mensagens, níveis de segurança,  e transação de forma automática ... menos no modo basicHttpBinding que simplesmente serializa e repasa por HTTP basicamente.

Se não possuem suporte .. entao como utilizar Transação iniciada no cliente e enviada ao Serviço,

A O namespace System.Transactions facilita nossa vida com as seguintes classes e métodos:

Dim propToken As Byte() = TransactionInterop.GetTransmiterPropagationToken(Transaction.Current)

No Cliente caso Alguma transação esteja Aberta, o método Transaction.Current retorna a mesma enquanto o Metodo GetTransmiterPropagationToken retorna um objeto do Tipo Byte() para ser passado ao Serviço.

Já no Serviço se pode ser executado os seguintes métodos

Dim trans As Transaction = TransactionInterop.GetTransactionFromTransmiterPropagationToken(propToken)

O objeto Byte() propToken é passado como parâmetro para o Serviço.

A instância da transaction pode ser feita da seguinte forma:

Using tranScope  As New TransactionScope(trans)

'Código a ser executado na Transação

tranScope.Complete()

End Using

 Dessa forma a transação pode ser propagada entre os serviços mesmo sendo basicHttpBinding.

 

 

Tags: , ,

ASP.NET

Sobre Mim

Felipe Augusto Silva Lambert - Analista de Sistemas, experiência em 4 anos desenvolvimento ASP.NET, utilizando tecnologias ServerSide (Design Patterns, Linq, WCF, SQL Server, C# e VB.NET) e ClientSide (JavaScript e Jquery). técnico em Mecatrônica e bacharel em Ciência da Computação.

Widget Month List not found.

Unknown server tag 'blog:MonthList'.X