Delen via


Voortplanting

In dit onderwerp wordt beschreven hoe activiteiten worden doorgegeven in het WCF-traceringsmodel (Windows Communication Foundation).

Doorgifte gebruiken om activiteiten te correleren tussen eindpunten

Doorgifte biedt de gebruiker een directe correlatie van fouttraceringen voor dezelfde verwerkingseenheid voor toepassingseindpunten, bijvoorbeeld een aanvraag. Fouten die worden verzonden op verschillende eindpunten voor dezelfde verwerkingseenheid, worden gegroepeerd in dezelfde activiteit, zelfs in toepassingsdomeinen. Dit wordt gedaan door het doorgeven van de activiteits-id in de berichtkoppen. Als er een time-out optreedt voor een client vanwege een interne fout op de server, worden beide fouten in dezelfde activiteit weergegeven voor directe correlatie.

Gebruik hiervoor de ActivityTracing instelling zoals in het vorige voorbeeld is gedemonstreerd. Stel bovendien het propagateActivity kenmerk voor de System.ServiceModel traceringsbron in op alle eindpunten.

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

Activiteitsdoorgifte is een configureerbare mogelijkheid die ervoor zorgt dat WCF een header toevoegt aan uitgaande berichten, waaronder de activiteits-id op de TLS. Door dit op te sporen aan de serverzijde, kunnen we client- en serveractiviteiten correleren.

Doorgiftedefinitie

De gAId van activiteit M wordt doorgegeven aan activiteit N als alle volgende voorwaarden van toepassing zijn.

  • N wordt gemaakt vanwege M

  • De gAId van M staat bekend bij N

  • De gAId van N is gelijk aan de gAId van M.

De gAId wordt doorgegeven via de berichtkop ActivityId, zoals wordt geïllustreerd in het volgende XML-schema.

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

Hier volgt een voorbeeld van de berichtkop.

<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>  

Doorgifte- en activiteitsgrenzen

Wanneer de activiteits-id wordt doorgegeven tussen eindpunten, verzendt de berichtontvanger een start- en stoptracering met die (doorgegeven) activiteits-id. Daarom is er een start- en stoptracering met die gAId van elke traceringsbron. Als de eindpunten zich in hetzelfde proces bevinden en dezelfde traceringsbronnaam gebruiken, worden meerdere begin- en stopbewerkingen met dezelfde lAId (dezelfde gAId, dezelfde traceringsbron, hetzelfde proces) gemaakt.

Synchronisatie

Als u gebeurtenissen wilt synchroniseren tussen eindpunten die op verschillende computers worden uitgevoerd, wordt een CorrelationId toegevoegd aan de ActivityId-header die wordt doorgegeven in berichten. Hulpprogramma's kunnen deze id gebruiken om gebeurtenissen te synchroniseren tussen computers met klokverschillen. Het hulpprogramma Service Trace Viewer gebruikt deze id om berichtstromen tussen eindpunten weer te geven.

Zie ook