Sdílet prostřednictvím


Šíření

Toto téma popisuje šíření aktivit v modelu trasování WCF (Windows Communication Foundation).

Použití šíření ke korelaci aktivit napříč koncovými body

Šíření poskytuje uživateli přímou korelaci trasování chyb pro stejnou jednotku zpracování napříč koncovými body aplikace, například požadavek. Chyby generované v různých koncových bodech pro stejnou jednotku zpracování se seskupují ve stejné aktivitě, a to i napříč doménami aplikace. To se provádí prostřednictvím šíření ID aktivity v hlavičce zprávy. Proto pokud vyprší časový limit klienta kvůli vnitřní chybě na serveru, obě chyby se zobrazí ve stejné aktivitě pro přímou korelaci.

K tomu použijte ActivityTracing nastavení, jak je znázorněno v předchozím příkladu. Kromě toho nastavte propagateActivity atribut pro System.ServiceModel zdroj trasování ve všech koncových bodech.

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

Šíření aktivit je konfigurovatelná funkce, která způsobí, že WCF přidá hlavičku do odchozích zpráv, což zahrnuje ID aktivity na protokolu TLS. Zahrnutím toho na následné trasování na straně serveru můžeme korelovat aktivity klientů a serverů.

Definice šíření

GAId aktivity se rozšíří do aktivity N, pokud platí všechny následující podmínky.

  • N se vytvoří kvůli M

  • M's gAId je známo N

  • N's gAId je roven M's gAId.

GAId se šíří prostřednictvím hlavičky zprávy ActivityId, jak je znázorněno v následujícím schématu XML.

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

Následuje příklad záhlaví zprávy.

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

Hranice šíření a aktivity

Když se ID aktivity rozšíří mezi koncové body, příjemce zprávy vygeneruje trasování Start a Stop s tímto (šířeným) ID aktivity. Proto existuje trasování Start a Stop s tímto identifikátorem gAId z každého zdroje trasování. Pokud jsou koncové body ve stejném procesu a používají stejný název zdroje trasování, vytvoří se několik spuštění a zastavení se stejným id LAId (stejný identifikátor gAId, stejný zdroj trasování, stejný proces).

Synchronizace

Pokud chcete synchronizovat události mezi koncovými body, které běží na různých počítačích, přidá se id korelace do hlavičky ActivityId, která se šíří ve zprávách. Nástroje můžou toto ID použít k synchronizaci událostí napříč počítači s nesrovnalostmi mezi hodinami. Konkrétně nástroj Service Trace Viewer používá toto ID k zobrazení toků zpráv mezi koncovými body.

Viz také