Förökning
I det här avsnittet beskrivs aktivitetsspridning i spårningsmodellen för Windows Communication Foundation (WCF).
Använda spridning för att korrelera aktiviteter mellan slutpunkter
Spridning ger användaren direkt korrelation av felspårningar för samma bearbetningsenhet mellan programslutpunkter, till exempel en begäran. Fel som genereras vid olika slutpunkter för samma bearbetningsenhet grupperas i samma aktivitet, även mellan programdomäner. Detta görs genom spridning av aktivitets-ID:t i meddelandehuvudena. Om en klient överskrider tidsgränsen på grund av ett internt fel på servern visas därför båda felen i samma aktivitet för direkt korrelation.
Det gör du genom att använda inställningen ActivityTracing
enligt föregående exempel. Ange dessutom propagateActivity
attributet för spårningskällan System.ServiceModel
vid alla slutpunkter.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true" >
Aktivitetsspridning är en konfigurerbar funktion som gör att WCF lägger till en rubrik i utgående meddelanden, vilket inkluderar aktivitets-ID:t på TLS. Genom att inkludera detta på efterföljande spårningar på serversidan kan vi korrelera klient- och serveraktiviteter.
Spridningsdefinition
Aktivitet M:s gAId sprids till aktivitet N om alla följande villkor gäller.
N skapas på grund av M
M:s gAId är känt för N
N:s gAId är lika med M:s gAId.
GAId sprids via meddelanderubriken ActivityId enligt följande XML-schema.
<xsd:element name="ActivityId" type="integer" minOccurs="0">
<xsd:attribute name="CorrelationId" type="integer" minOccurs="0"/>
</xsd:element>
Följande är ett exempel på meddelanderubriken.
<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>
Spridnings- och aktivitetsgränser
När aktivitets-ID:t sprids mellan slutpunkter genererar meddelandemottagaren ett start- och stoppspårningar med det (spridda) aktivitets-ID:t. Därför finns det en start- och stoppspårning med det gAId från varje spårningskälla. Om slutpunkterna är i samma process och använder samma namn på spårningskällan skapas flera Start och Stopp med samma lAId (samma gAId, samma spårningskälla och samma process).
Synkronisering
Om du vill synkronisera händelser mellan slutpunkter som körs på olika datorer läggs ett CorrelationId till i ActivityId-huvudet som sprids i meddelanden. Verktyg kan använda det här ID:t för att synkronisera händelser mellan datorer med klockavvikelse. Mer specifikt använder verktyget Service Trace Viewer det här ID:t för att visa meddelandeflöden mellan slutpunkter.