Diagnosticando aplicativos transacionais

Este tópico descreve como usar o recurso de gerenciamento e diagnóstico do WCF (Windows Communication Foundation) para solucionar problemas de um aplicativo transacional.

Contadores de desempenho

O WCF fornece um conjunto padrão de contadores de desempenho para medir o desempenho do aplicativo transacional. Para obter mais informações, consulte Performance Counters.

Os contadores de desempenho são aplicados a três níveis diferentes: serviço, endpoint e operação, conforme descrito nas tabelas a seguir.

Contadores de Desempenho de Serviços

Contador de desempenho Descrição
Transações fluíram O número de transações que fluíram para operações nesse serviço. Esse contador é incrementado sempre que uma transação está presente na mensagem enviada ao serviço.
Transações fluídas por segundo O número de transações que fluíram para operações nesse serviço em cada segundo. Esse contador é incrementado sempre que uma transação está presente na mensagem enviada ao serviço.
Operações Transacionadas Confirmadas O número de operações transacionadas executadas, cuja transação foi concluída com o resultado confirmado neste serviço. O trabalho realizado nessas operações é totalmente confirmado. Os recursos são atualizados de acordo com o trabalho feito na operação.
Operações transacionadas confirmadas por segundo O número de operações transacionadas executadas, cuja transação foi concluída com o resultado confirmado neste serviço em cada segundo. O trabalho realizado nessas operações é totalmente confirmado. Os recursos são atualizados de acordo com o trabalho feito na operação.
Operações de transação abortadas O número de operações transacionadas executadas, cuja transação foi concluída com o resultado abortado neste serviço. O trabalho feito nessas operações é revertido. Os recursos são revertidos para o estado anterior.
Operações Transacionadas Anuladas por Segundo O número de operações transacionadas executadas, cuja transação foi concluída com o resultado abortado neste serviço em cada segundo. O trabalho feito nessas operações é revertido. Os recursos são revertidos para o estado anterior.
Operações transacionadas em dúvida O número de operações transacionadas executadas, cuja transação foi concluída com um resultado em dúvida nesse serviço. O trabalho feito com um resultado em dúvida está em um estado indeterminado. Os recursos são mantidos pendentes.
Operações Transacionadas em Dúvida por Segundo O número de operações executadas, cuja transação foi concluída com um resultado incerto nesse serviço a cada segundo. O trabalho feito com um resultado em dúvida está em um estado indeterminado. Os recursos são mantidos pendentes.

Contadores de desempenho de ponto de extremidade

Contador de desempenho Descrição
Transações fluíram O número de transações fluídas para operações neste ponto de extremidade. Esse contador é incrementado sempre que há uma transação na mensagem que é enviada para o endpoint.
Transações fluídas por segundo O número de transações fluídas para operações neste ponto de extremidade em cada segundo. Esse contador é incrementado sempre que há uma transação na mensagem que é enviada para o endpoint.

Contadores de desempenho de operação

Contador de desempenho Descrição
Transações fluíram O número de transações fluídas para operações neste ponto de extremidade. Esse contador é incrementado sempre que há uma transação na mensagem que é enviada para o endpoint.
Transações fluídas por segundo O número de transações fluídas para operações neste ponto de extremidade em cada segundo. Esse contador é incrementado sempre que há uma transação na mensagem que é enviada para o endpoint.

Instrumentação de Gerenciamento do Windows

O WCF expõe dados de inspeção de um serviço em tempo de execução através de um provedor WMI (Instrumentação de Gerenciamento do Windows) do WCF. Para obter mais informações sobre como acessar dados WMI, consulte Usando a Instrumentação de Gerenciamento do Windows para Diagnóstico.

Várias propriedades WMI somente leitura indicam as configurações de transação aplicadas para um serviço. As tabelas a seguir listam todas essas configurações.

Em um serviço, o ServiceBehaviorAttribute tem as seguintes propriedades.

Nome Tipo Descrição
LiberaInstânciaDeServiçoAoConcluirTransação booleano Especifica se o objeto de serviço é reciclado quando a transação atual é concluída.
TransactionAutoCompleteOnSessionClose booleano Especifica se as transações pendentes são concluídas quando a sessão atual é fechada.
Nível de Isolamento de Transação Uma cadeia de caracteres que contém um valor válido da IsolationLevel enumeração. Especifica o nível de isolamento da transação compatível com esse serviço.
TransactionTimeout DateTime Especifica o período no qual uma transação deve ser concluída.

O ServiceTimeoutsBehavior possui a propriedade a seguir.

Nome Tipo Descrição
TransactionTimeout DateTime Especifica o período no qual uma transação deve ser concluída.

Em uma vinculação, o TransactionFlowBindingElement tem as seguintes propriedades.

Nome Tipo Descrição
Protocolo de Transação Uma cadeia de caracteres que contém um valor válido do TransactionProtocol tipo. Especifica o protocolo de transação a ser usado no fluxo de uma transação.
TransactionFlow booleano Especifica se o fluxo de transação de entrada está habilitado.

Em uma operação, o OperationBehaviorAttribute tem as seguintes propriedades:

Nome Tipo Descrição
TransactionAutoComplete booleano Especifica se a transação atual será confirmada automaticamente se não ocorrerem exceções sem tratamento.
EscopoDeTransaçãoNecessário booleano Especifica se a operação requer uma transação.

Em uma operação, TransactionFlowAttribute possui as seguintes propriedades.

Nome Tipo Descrição
Opção de Fluxo de Transação Uma cadeia de caracteres que contém um valor válido da TransactionFlowOption enumeração. Especifica até que ponto o fluxo de transação é necessário.

Rastreamento

Os rastreamentos permitem monitorar e analisar falhas em seus aplicativos transacionais. Você pode habilitar o rastreamento usando as seguintes maneiras:

  • Rastreamento padrão do WCF

    Esse tipo de rastreamento é o mesmo que rastrear qualquer aplicativo WCF. Para obter mais informações, consulte Configurando o Rastreamento.

  • Rastreamento de WS-AtomicTransaction

    O rastreamento WS-AtomicTransaction pode ser habilitado usando o Utilitário de ConfiguraçãoWS-AtomicTransaction (wsatConfig.exe). Esse rastreamento fornece informações sobre o estado das transações e dos participantes em um sistema. Para habilitar também o rastreamento interno do Modelo de Serviço, você pode definir a chave do registro HKLM\SOFTWARE\Microsoft\WSAT\3.0\ServiceModelDiagnosticTracing como um valor válido da enumeração SourceLevels. Você pode habilitar o registro em log de mensagens da mesma maneira que outros aplicativos WCF.

  • Rastreamento de System.Transactions

    Ao usar o protocolo OleTransactions, as mensagens de protocolo não podem ser rastreadas. O suporte de rastreamento que a System.Transactions infraestrutura fornece (que usa OleTransactions) permite que os usuários exibam eventos que ocorreram nas transações. Para habilitar o rastreamento de um System.Transactions aplicativo, inclua o seguinte código no arquivo de configuração App.config.

    <configuration>
      <system.diagnostics>
         <sources>
            <source name="System.Transactions" switchValue="Verbose, ActivityTracing">
               <listeners>
                  <add name="Text"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData="SysTx.log"
                     traceOutputOptions="Callstack" />
               </listeners>
            </source>
         </sources>
         <trace autoflush="true" indentsize="4">
         </trace>
      </system.diagnostics>
    </configuration>
    

    Isso também permite o rastreamento do WCF, pois o WCF também utiliza a System.Transactions infraestrutura.

Consulte também