Partilhar via


Atividade

Este tópico descreve rastreamentos de atividade no modelo de rastreamento do Windows Communication Foundation (WCF). As atividades são unidades de processamento que ajudam o usuário a reduzir o escopo de uma falha. Os erros que ocorrem na mesma atividade estão diretamente relacionados. Por exemplo, uma operação falha porque a desencriptação da mensagem falhou. Os registos tanto da operação como da falha na descriptografia da mensagem aparecem na mesma atividade, mostrando uma correlação direta entre o erro de descriptografia e o erro de pedido.

Configurando o rastreamento de atividades

O WCF fornece atividades predefinidas para processar aplicativos (consulte Lista de atividades). Você também pode definir atividades programaticamente para agrupar rastreamentos de usuários. Para obter mais informações, consulte Emitting User-Code Traces.

Para registar os registos de atividades em tempo de execução, utilize a configuração ActivityTracing para a origem System.ServiceModel do registo, ou outras origens de registo WCF ou personalizadas, conforme demonstrado pelo seguinte código de configuração.

<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">

Para entender mais sobre o elemento de configuração e os atributos que estão sendo usados, consulte o tópico Configurando o rastreamento .

Atividades de visualização

Você pode visualizar as atividades e a sua utilidade na ferramenta Service Trace Viewer (SvcTraceViewer.exe). Quando o ActivityTracing está habilitado, essa ferramenta pega os rastreamentos e os classifica com base na atividade. Você também pode ver registos de transferência. Uma transferência de rastreamento indica como diferentes atividades estão relacionadas umas com as outras. Você pode ver que uma determinada atividade fez com que outra começasse. Por exemplo, uma solicitação de mensagem iniciou um handshake de segurança para obter um Secure Conversation Token.

Correlacionando atividades no Service Trace Viewer

A ferramenta Visualizador de Rastreamento de Serviço fornece duas exibições de atividades:

  • Exibição de lista , onde o ID da atividade é usado para correlacionar diretamente rastreamentos entre processos. Traços de processos diferentes, por exemplo, cliente e serviço, mas com o mesmo ID de atividade são agrupados na mesma atividade. Portanto, um erro que ocorre no serviço e que causa um erro no cliente aparecerá na mesma visualização de atividade na ferramenta.

  • Visualização de gráfico , onde as atividades são agrupadas por processos. Nessa visualização, um cliente e um serviço com o mesmo ID de atividade têm seus rastros em atividades diferentes. Para correlacionar atividades com o mesmo ID de atividade em processos diferentes, a ferramenta mostra fluxos de mensagens entre as atividades relacionadas.

Para obter mais informações e ver uma exibição gráfica da ferramenta Visualizador de Rastreamento de Serviço, consulte Ferramenta Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) e Usando o Visualizador de Rastreamento de Serviço para Exibir Rastreamentos Correlacionados e Solução de Problemas.

Definindo o escopo de uma atividade

Uma atividade é definida na fase de design e denota uma unidade lógica de trabalho. Os vestígios emitidos com o mesmo identificador de atividade estão diretamente relacionados, fazem parte da mesma atividade. Como uma atividade pode cruzar os limites do ponto de extremidade (uma solicitação), dois escopos para uma atividade são definidos.

  • Global âmbito, por aplicação. Neste âmbito, a atividade é identificada pelo seu identificador de atividade global único de 128 bits, o gAId. O gAid é aquilo que é propagado por meio dos pontos finais.

  • Local escopo, por ponto de extremidade. Neste âmbito, a atividade é identificada pelo seu gAId, juntamente com o nome da origem do rastreio que emite os rastreamentos de atividade e o ID do processo. Este trio constitui o id de atividade local, lAId. O lAId é usado para definir os limites (locais) de uma atividade.

Esquema de rastreamento

Os rastreios podem ser emitidos usando qualquer esquema e nas plataformas da Microsoft. "e2e" (para "End to End") é um esquema comumente usado. Esse esquema inclui um identificador de 128 bits (gAId), o nome da fonte de rastreamento e a ID do processo. No código gerenciado, XmlWriterTraceListener emite rastreamentos no esquema E2E.

Os desenvolvedores podem definir o AID que é emitido juntamente com um rastreamento ao definir a propriedade ActivityId com um Identificador Global Único (GUID) no Thread Local Storage (TLS). O exemplo a seguir demonstra isso.

// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();

A configuração do gAId em TLS será evidente quando os registos forem emitidos usando uma fonte de rastreamento, como no exemplo a seguir.

TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");

O registro emitido conterá o gAId atualmente em TLS, o nome da fonte de traço passado como parâmetro do construtor da fonte de traço e o ID do processo atual.

Tempo de vida da atividade

Em termos mais estritos, a evidência de uma atividade começa na primeira vez que o ID de atividade é usado em um rastreamento emitido e termina na última vez que é usado em um rastreamento emitido. Um conjunto predefinido de tipos de rastreamento é fornecido pela System.Diagnostics, incluindo Start e Stop, para marcar explicitamente os limites do tempo de vida da atividade.

  • Início: indica o início de uma atividade. Um rastreamento "Start" fornece um registro do início de uma nova etapa de processamento. Ele contém um novo ID de atividade para uma determinada fonte de rastreamento em um determinado processo, exceto quando o ID de atividade é propagado entre pontos de extremidade, caso em que vemos um "Início" para cada ponto de extremidade. Exemplos de início de uma nova atividade incluem a criação de um novo thread para processamento ou a inserção de um novo método público.

  • Parar: indica o fim de uma atividade. Um rastreamento "Parar" fornece um registro de término de uma etapa de processamento existente. Ele contém um ID de atividade existente para uma determinada fonte de rastreamento em um determinado processo, exceto quando o ID de atividade é propagado entre pontos de extremidade, caso em que vemos um "Parar" por ponto de extremidade. Exemplos de interrupção de uma atividade incluem encerrar um encadeamento de processamento ou sair de um método cujo início foi indicado por um traço "Start".

  • Suspender: indica a suspensão do processamento de uma atividade. Um rastreamento "Suspender" contém um ID de atividade existente cujo processamento deve ser retomado posteriormente. Nenhum rastreamento é emitido com essa ID entre os eventos Suspender e Retomar da fonte de rastreamento atual. Os exemplos incluem pausar uma atividade ao chamar uma função de biblioteca externa ou ao aguardar um recurso, como uma porta de conclusão de E/S.

  • Retoma: Indica o reinício do processamento de uma atividade. Um rastreio "Reativar" contém um ID de atividade existente cujo último rastreio emitido pela fonte de rastreamento atual foi um rastreio de "Suspensão". Os exemplos incluem retornar de uma chamada para uma função de biblioteca externa ou quando sinalizado para retomar o processamento por um recurso, como uma porta de conclusão de E/S.

  • Transferência: Como algumas atividades são causadas por outras, ou se relacionam com outras, as atividades podem ser relacionadas a outras atividades através de rastreamentos de "Transferência". Uma transferência registra a relação direcionada de uma atividade para outra

Os rastros de início e parada não são críticos para a correlação. No entanto, eles podem ajudar a aumentar o desempenho, a criação de perfis e a validação do escopo da atividade.

Usando estes tipos, as ferramentas podem otimizar a navegação nos logs de rastreamento para encontrar eventos imediatamente relacionados à mesma atividade ou eventos em atividades relacionadas, se a ferramenta seguir traces de transferência. Por exemplo, as ferramentas pararão de analisar os logs de uma determinada atividade quando virem um rastreamento Start/Stop.

Esses tipos de rastreamento também podem ser usados para criação de perfil. Os recursos consumidos entre os marcadores de início e de parada representam o tempo inclusivo da atividade, incluindo atividades lógicas contidas. Ao subtrair os intervalos de tempo entre os rastreamentos de Suspender e Retomar, obtém-se o tempo de atividade real.

O Stop trace também é particularmente útil para validar o escopo das atividades implementadas. Se alguns rastreamentos de processamento aparecerem após o rastreamento Stop em vez de dentro de uma determinada atividade, isso pode sugerir um defeito de código.

Diretrizes para o uso do rastreamento de atividades

A seguir está uma orientação sobre o uso de registos do ActivityTracing (Start, Stop, Suspend, Resume e Transfer).

  • O rastreamento é um gráfico cíclico direcionado, não uma árvore. Pode devolver o controlo a uma atividade que originou uma atividade.

  • Uma atividade denota um limite de processamento que pode ser significativo para o administrador do sistema ou para a capacidade de suporte.

  • Cada método WCF, tanto no cliente quanto no servidor, é limitado pelo início de uma nova atividade e, em seguida, (após a conclusão do trabalho) pelo término da nova atividade e pelo retorno à atividade ambiente.

  • Atividades de longa duração (contínuas), como escutar conexões ou aguardar mensagens, são representadas por marcadores de início/parada correspondentes.

  • As atividades desencadeadas pelo recebimento ou processamento de uma mensagem são representadas por limites de rastreamento.

  • As atividades representam atividades, não necessariamente objetos. Uma atividade deve ser interpretada como "isso estava acontecendo quando . . . (ocorreu emissão vestigial significativa)."

Ver também