Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve a propagação de atividades no modelo de rastreamento do Windows Communication Foundation (WCF).
Usar a propagação para correlacionar atividades entre pontos finais
A propagação fornece ao utilizador uma correlação direta dos rastreios de erros para a mesma unidade de processamento nos pontos de extremidade da aplicação, como por exemplo, um pedido. Os erros emitidos em diferentes pontos de extremidade para a mesma unidade de processamento são agrupados na mesma atividade, mesmo entre domínios de aplicação. Isso é feito através da propagação do ID da atividade nos cabeçalhos das mensagens. Portanto, se um cliente atingir o tempo limite devido a um erro interno no servidor, ambos os erros aparecerão na mesma atividade para correlação imediata.
Para fazer isso, use a ActivityTracing
configuração como demonstrado no exemplo anterior. Além disso, defina o atributo propagateActivity
para a origem de rastreamento System.ServiceModel
em todos os terminais.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true" >
A propagação de atividade é um recurso configurável que faz com que o WCF adicione um cabeçalho às mensagens de saída, o que inclui o ID da atividade no TLS. Ao incluir isso em rastreamentos subsequentes no lado do servidor, podemos correlacionar as atividades do cliente e do servidor.
Definição de propagação
O gAId da atividade M é propagado para a atividade N se todas as condições a seguir se aplicarem.
N é criado por causa de M
O gAId de M é conhecido por N
O gAId de N é igual ao gAId de M.
O gAId é propagado através do cabeçalho da mensagem ActivityId, conforme ilustrado no esquema XML a seguir.
<xsd:element name="ActivityId" type="integer" minOccurs="0">
<xsd:attribute name="CorrelationId" type="integer" minOccurs="0"/>
</xsd:element>
Segue-se um exemplo do cabeçalho da mensagem.
<MessageLogTraceRecord>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://Microsoft.ServiceModel.Samples/ICalculator/Subtract
</a:Action>
<a:MessageID>urn:uuid:f0091eae-d339-4c7e-9408-ece34602f1ce
</a:MessageID>
<ActivityId CorrelationId="aaaa0000-bb11-2222-33cc-444444dddddd"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
17f59a29-b435-4a15-bf7b-642ffc40eac8
</ActivityId>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">net.tcp://localhost/servicemodelsamples/service</a:To>
</s:Header>
<s:Body>
<Subtract xmlns="http://Microsoft.ServiceModel.Samples">
<n1>145</n1>
<n2>76.54</n2>
</Subtract>
</s:Body>
</s:Envelope>
</MessageLogTraceRecord>
Limites de propagação e atividade
Quando o ID de atividade é propagado entre os pontos de extremidade, o recetor da mensagem emite rastreamentos de Início e Paragem com esse ID de atividade (propagado). Portanto, há um rastreamento Start e Stop com esse gAId de cada fonte de rastreamento. Se os pontos de extremidade estiverem no mesmo processo e usarem o mesmo nome de origem de rastreamento, vários Start e Stop com o mesmo lAId (mesmo gAId, mesma fonte de rastreamento, mesmo processo) serão criados.
Sincronização
Para sincronizar eventos entre pontos de extremidade executados em diferentes máquinas, um CorrelationId é adicionado ao cabeçalho ActivityId, que é propagado nas mensagens. As ferramentas podem usar esse ID para sincronizar eventos entre máquinas com discrepância de relógio. Especificamente, a ferramenta Visualizador de Rastreamento de Serviço usa este identificador para mostrar fluxos de mensagens entre endpoints.