none
TransactionScope RRS feed

  • Pergunta

  • Olá a todos!

    No meu ultimo projeto eu utilizei o TransactionScope para controlar as transacoes. Realmente é de muito facil implementacao, o que me deixou desconfiado. Fui atras e pesquisei sobre as questoes de performance e achei artigos dizendo que a perda de performance pode chegar a 50%. Ainda nao realizei o teste para comprovar essa perda.

    Gostaria de saber se alguem conhece a fundo o TransactionScope  como ele funciona e a magica que é feita... rss

     

    Att


    Sacanagem sem limite
    domingo, 28 de março de 2010 13:43

Respostas

  • Se não me engano a classe TransactionScope encapsula o as Transactions, quando ele verifica que há uma chamada a banco de dados, ele irá abrir a transação automaticamente e após executar o Commit.

    Quanto a questão de performance não acredito que seja mais custoso.


    Se sua pergunta foi respondida por favor marque a resposta como certa.
    quinta-feira, 8 de abril de 2010 17:23

Todas as Respostas

  • Olá Jonnax

    Complicado, dei uma pesquisada pelo termo TransactionScope Internals, mas nada. apareceu algumas coisas que valem a pena a leitura. Bem, dá uma conferida nesse link: http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    terça-feira, 6 de abril de 2010 04:35
  • Jonnax,

     

    O TransactionScope vai te trazer perda de performance consideravel apenas se você abrir duas conexões dentro de seu escopo. Isso acontece pois, ao abrir a segunda conexão, a transação é promovida para o status de "distributed transaction", e a responsabilidade passa a ser do MSDTC, que é lento.

    Faça um teste de performance você mesmo. Experimente fazer uma série de inserts/updates em algum banco de dados utilizando uma transção comum do ADO.NET, e depois faça o mesmo utilizando o TransactionScope. Guarde os tempos e poste aqui no forum, vai ser interessante analisar a performace ;-)

     

    []s


    []s, Victor Arias - Desenvolvedor .NET http://coderzen.spaces.live.com/
    quarta-feira, 7 de abril de 2010 19:21
  • Se não me engano a classe TransactionScope encapsula o as Transactions, quando ele verifica que há uma chamada a banco de dados, ele irá abrir a transação automaticamente e após executar o Commit.

    Quanto a questão de performance não acredito que seja mais custoso.


    Se sua pergunta foi respondida por favor marque a resposta como certa.
    quinta-feira, 8 de abril de 2010 17:23
  • Danimar, eu achei poucos artigos explicando o funcionamento e a arquitetura do TransactionScope. Já ouvi dizer que ele nao mais que um conjunto de Interfaces, outras definicoes que nao lembro agora, mas até entao nada muito concreto.

    Quanto a performance a queda existe, mas nao sei precisamente quanto.

    Pretendo em brever fazer um teste e postarei o resultado aqui.

    Abraco...

    Se alguem tiver mais conhecimento do TransactionScope... eu agradeço...


    Sacanagem sem limite
    sexta-feira, 9 de abril de 2010 03:39
  • Prezado,

    Conseguiu realizar os testes?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    quinta-feira, 6 de maio de 2010 23:24
    Moderador