Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.