Bagikan melalui


Propagasi

Topik ini menjelaskan penyebaran aktivitas dalam model pelacakan Windows Communication Foundation (WCF).

Menggunakan Propagasi untuk Menghubungkan Aktivitas Di Seluruh Titik Akhir

Penyebaran memberikan pengguna korelasi langsung pelacakan kesalahan untuk unit pemrosesan yang sama di berbagai titik akhir aplikasi, misalnya permintaan. Kesalahan yang dipancarkan di titik akhir yang berbeda untuk unit pemrosesan yang sama dikelompokkan dalam aktivitas yang sama, bahkan di seluruh domain aplikasi. Ini dilakukan melalui penyebaran ID aktivitas di header pesan. Oleh karena itu, jika klien kehabisan waktu karena kesalahan internal di server, kedua kesalahan muncul dalam aktivitas yang sama untuk korelasi langsung.

Untuk melakukan ini, gunakan pengaturan seperti yang ActivityTracing ditunjukkan dalam contoh sebelumnya. Selain itu, tetapkan atribut propagateActivity untuk sumber jejak System.ServiceModel di semua titik akhir.

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

Penyebaran aktivitas adalah kemampuan yang dapat dikonfigurasi yang menyebabkan WCF menambahkan header ke pesan keluar, yang mencakup ID aktivitas pada TLS. Dengan menyertakan ini pada jejak berikutnya di sisi server, kita dapat menghubungkan aktivitas klien dan server.

Definisi Penyebaran

gAId Aktivitas M disebarkan ke aktivitas N jika semua kondisi berikut terpenuhi.

  • N dibuat karena M

  • GAId milik M diketahui oleh N

  • GAId N sama dengan gAId M.

gAId disebarluaskan melalui header pesan ActivityId, seperti yang diilustrasikan dalam skema XML berikut.

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

Berikut ini adalah contoh header pesan.

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

Batas Penyebaran dan Aktivitas

Saat ID aktivitas disebarluaskan di seluruh titik akhir, penerima pesan memancarkan jejak Mulai dan Berhenti dengan ID aktivitas (disebarluaskan) tersebut. Oleh karena itu, ada pelacakan Mulai dan Hentikan dengan gAId tersebut dari setiap sumber pelacakan. Jika titik akhir berada dalam proses yang sama dan menggunakan nama sumber pelacakan yang sama, beberapa Start and Stop dengan lAId yang sama (gAId yang sama, sumber pelacakan yang sama, proses yang sama) akan dibuat.

Sinkronisasi

Untuk menyinkronkan peristiwa di seluruh titik akhir yang berjalan pada komputer yang berbeda, CorrelationId ditambahkan ke header ActivityId yang disebarkan dalam pesan. Alat dapat menggunakan ID ini untuk menyinkronkan peristiwa di seluruh komputer dengan perbedaan jam. Secara khusus, alat Service Trace Viewer menggunakan ID ini untuk menampilkan alur pesan antar titik akhir.

Lihat juga