PropagazionePropagation

Questo argomento descrive la propagazione di attività nel modello di traccia di Windows Communication Foundation (WCF).This topic describes activity propagation in the Windows Communication Foundation (WCF) tracing model.

Utilizzo della propagazione per correlare attività attraverso endpointUsing Propagation to Correlate Activities Across Endpoints

La propagazione fornisce all'utente la correlazione diretta delle tracce di errore per la stessa unità di elaborazione attraverso endpoint dell'applicazione, ad esempio, una richiesta.Propagation provides the user with direct correlation of error traces for the same unit of processing across application endpoints, for example, a request. Gli errori generati in endpoint diversi per la stessa unità di elaborazione vengono raggruppati nella stessa attività, anche attraverso domini applicazione.Errors emitted at different endpoints for the same unit of processing are grouped in the same activity, even across application domains. Questa operazione viene eseguita tramite la propagazione dell'ID attività nelle intestazioni del messaggio.This is done through propagation of the activity ID in the message headers. Se, pertanto, un client va in timeout a causa di un errore interno nel server, entrambi gli errori vengono visualizzati nella stessa attività per la correlazione diretta.Therefore, if a client times out because of an internal error in the server, both errors appear in the same activity for direct correlation.

A tale scopo, usare l'impostazione ActivityTracing come illustrato nell'esempio precedente.To do this, use the ActivityTracing setting as demonstrated in the previous example. Impostare inoltre l'attributo propagateActivity per l'origine di traccia System.ServiceModel in tutti gli endpoint.In addition, set the propagateActivity attribute for the System.ServiceModel trace source at all endpoints.

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

Propagazione di attività è una funzionalità configurabile che fa sì che WCF aggiungere un'intestazione ai messaggi in uscita, che include l'ID attività in TLS.Activity propagation is a configurable capability that causes WCF to add a header to outbound messages, which includes the activity ID on the TLS. Includendo questa intestazione nelle tracce successive lato server, è possibile correlare le attività di client e server.By including this on subsequent traces on the server side, we can correlate client and server activities.

Definizione di propagazionePropagation Definition

Il gAId dell'attività M viene propagato all'attività N se si applicano tutte le condizioni seguenti.Activity M’s gAId is propagated to activity N if all of the following conditions apply.

  • N viene creato a causa di MN is created because of M

  • Il gAId di M è conosciuto a NM’s gAId is known to N

  • Il gAId di N è uguale al gAId di M.N's gAId is equal to M’s gAId.

Il gAId viene propagato tramite l'intestazione del messaggio ActivityId, come illustrato nell'XML Schema seguente.The gAId is propagated through the ActivityId message header, as illustrated in the following XML schema.

<xsd:element name="ActivityId" type="integer" minOccurs="0">  
  <xsd:attribute name="CorrelationId" type="integer" minOccurs="0"/>  
</xsd:element>  

Di seguito è riportato un esempio di intestazione del messaggio.The following is an example of the message header.

<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="f94c6af1-7d5d-4295-b693-4670a8a0ce34"   

               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>  

Limiti della propagazione e dell'attivitàPropagation and Activity Boundaries

Quando l'ID attività viene propagato attraverso endpoint, il destinatario del messaggio emette tracce Start e Stop con quell'ID attività (propagato).When the activity ID is propagated across endpoints, the message receiver emits a Start and Stop traces with that (propagated) activity ID. Esiste pertanto una traccia Start e Stop con quel gAId da ogni origine di traccia.Therefore, there is a Start and Stop trace with that gAId from each trace source. Se gli endpoint sono nello stesso processo e usano lo stesso nome di origine di traccia, vengono creati più Start e Stop con lo stesso lAId (stesso gAId, stessa origine di traccia, stesso processo).If the endpoints are in the same process and use the same trace source name, multiple Start and Stop with the same lAId (same gAId, same trace source, same process) are created.

SincronizzazioneSynchronization

Per sincronizzare eventi attraverso endpoint che vengono eseguiti in computer diversi, viene aggiunto un CorrelationId all'intestazione ActivityId propagata nei messaggi.To synchronize events across endpoints that run on different machines, a CorrelationId is added to the ActivityId header that is propagated in messages. Gli strumenti possono usare questo ID per sincronizzare gli eventi attraverso computer con discrepanza dell'orologio.Tools can use this ID to synchronize events across machines with clock discrepancy. Nello specifico, lo strumento Visualizzatore delle tracce dei servizi usa questo ID per visualizzare i flussi dei messaggi tra endpoint.Specifically, the Service Trace Viewer tool uses this ID for showing message flows between endpoints.

Vedere ancheSee Also

Configurazione delle funzionalità di tracciaConfiguring Tracing
Uso del visualizzatore di tracce dei servizi per la visualizzazione di tracce correlate e la risoluzione dei problemiUsing Service Trace Viewer for Viewing Correlated Traces and Troubleshooting
Scenari di traccia end-to-endEnd-To-End Tracing Scenarios
Strumento Visualizzatore di tracce dei servizi (SvcTraceViewer.exe)Service Trace Viewer Tool (SvcTraceViewer.exe)