Ikhtisar Alur Pesan
Dalam sistem terdistribusi yang berisi layanan yang saling berhubungan, perlu untuk menentukan hubungan sebab akibat antara layanan. Penting untuk memahami berbagai komponen yang merupakan bagian dari aliran permintaan untuk mendukung skenario penting seperti pemantauan kesehatan, pemecahan masalah, dan analisis akar penyebab. Untuk mengaktifkan korelasi jejak antara berbagai layanan, di .NET Framework 4 kami menambahkan dukungan melalui fitur-fitur berikut:
Pelacakan analitik: Fitur pelacakan verbositas berkinerja tinggi dan rendah menggunakan Pelacakan Peristiwa untuk Windows (ETW).
Model aktivitas ujung-ke-ujung untuk layanan WCF/WF: Fitur ini mendukung korelasi jejak yang dihasilkan oleh namespace System.ServiceModel dan System.Workflow.ComponentModel.
Pelacakan ETW untuk WF: Fitur ini menggunakan rekaman pelacakan yang dihasilkan oleh layanan WF untuk memberikan visibilitas ke dalam status dan kemajuan alur kerja saat ini.
Kesalahan yang masuk dalam catatan pelacakan atau pelacakan dapat digunakan untuk menemukan cacat kode atau pesan yang salah terbentuk. Properti ActivityId dari simpul Korelasi di header pesan peristiwa dapat digunakan untuk menentukan aktivitas yang rusak. Untuk mengaktifkan pelacakan alur pesan menurut ID aktivitas, lihat Mengonfigurasi Pelacakan Alur Pesan. Topik ini menunjukkan cara mengaktifkan pelacakan alur pesan dalam proyek yang dibuat di tutorial Memulai.
Untuk mengaktifkan pelacakan alur pesan di tutorial Memulai
Buka Pemantau Peristiwa dengan mengeklik Mulai, Jalankan, dan masukkan
eventvwr.exe
.Jika Anda belum mengaktifkan pelacakan analitik, perluas Log Aplikasi dan Layanan, Microsoft, Windows, Aplikasi Server Aplikasi. Pilih Tampilkan, Tampilkan Log Analitik dan Debug. Klik kanan Analitik dan pilih Aktifkan Log. Biarkan Pemantau Peristiwa terbuka sehingga jejak dapat dilihat.
Buka sampel yang dibuat dalam Tutorial Memulai di Visual Studio 2012. Perhatikan bahwa Anda harus menjalankan Visual Studio 2012 sebagai administrator sehingga layanan dapat dibuat. Jika Anda telah menginstal sampel WCF, Anda dapat membuka Memulai, yang berisi proyek selesai yang dibuat dalam tutorial.
Klik kanan proyek Layanan dan pilih Tambahkan, Item Baru. Pilih File Konfigurasi Aplikasi dan klik OK.
Tambahkan kode berikut ke file App.Config yang dibuat pada langkah sebelumnya.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>
Jalankan aplikasi server tanpa debugging dengan menekan CTRL+F5. Jalankan proyek klien dengan mengeklik kanan proyek Klien dan memilih Debug, Mulai Instans Baru.
Untuk melacak peristiwa dari klien ke server, tambahkan yang berikut ke file konfigurasi aplikasi dalam proyek Klien.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>
Di Program.cs di klien, tambahkan direktif berikut
using
.using System.Diagnostics;
Main
Dalam metode dalam file program.cs dalam proyek klien, atur Trace GUID untuk disebarkan di log peristiwa.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;
Refresh dan periksa log Analitik. Cari peristiwa dengan ID Peristiwa 220. Pilih peristiwa, dan klik tab Detail di panel pratinjau. Peristiwa ini akan berisi ID korelasi untuk aktivitas panggilan.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />
Catatan
Semua peristiwa dengan GUID yang sama di ActivityID terkait dengan satu permintaan. Ini dapat digunakan untuk menghubungkan pesan dari klien tertentu ke layanan tertentu. Jika klien memanggil layanan lain, maka klien yang sama dapat diidentifikasi oleh ActivityID.
Dalam beberapa kasus, ActivityID dapat berubah dari GUID asli menjadi ActivityID baru. Dalam hal ini, peristiwa transfer dipancarkan. ID peristiwa ini adalah 499, dan peristiwa akan berisi data berikut di header.
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-Application Server-Applications" Guid="{c651f5f6-1c0d-492e-8ae1-b4efd7c9d503}" /> <EventID>499</EventID> ... <Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" RelatedActivityID="{85FC0930-9C49-42DA-804B-A7368104BD1B}" /> ... </System> </Event>
Catatan
Peristiwa transfer mencatat perubahan ActivityID aktif dari GUID yang ditentukan sebagai ActivityID ke GUID yang ditentukan sebagai RelatedActivityID. Setelah peristiwa transfer dipancarkan, semua peristiwa akan berisi GUID baru sebagai ActivityID.