Pelacakan Analitik WCF

Sampel WCFAnalyticTracingExtensibility menunjukkan bagaimana cara menambahkan peristiwa pelacakan Anda sendiri ke aliran jejak analitik yang ditulis oleh Windows Communication Foundation (WCF) ke ETW dalam .NET Framework. Jejak analitik dimaksudkan untuk memudahkan untuk mendapatkan visibilitas ke dalam layanan Anda tanpa membayar penalti performa tinggi. Sampel ini menunjukkan cara menggunakan System.Diagnostics.Eventing API untuk menulis peristiwa yang terintegrasi dengan layanan WCF.

Untuk informasi selengkapnya tentang System.Diagnostics.Eventing API, lihat System.Diagnostics.Eventing.

Untuk mempelajari selengkapnya tentang pelacakan peristiwa di Windows, lihat Meningkatkan Penelusuran Kesalahan dan Penyetelan Performa dengan ETW.

Membuang EventProvider

Sampel ini menggunakan System.Diagnostics.Eventing.EventProvider kelas , yang mengimplementasikan System.IDisposable. Saat menerapkan pelacakan untuk layanan WCF, kemungkinan Anda mungkin akan menggunakan sumber daya EventProvider selama masa pakai layanan. Untuk alasan ini, dan demi keterbacaan, sampel ini tidak pernah menghapus elemen yang terbungkus EventProvider. Jika karena alasan tertentu layanan Anda memiliki persyaratan yang berbeda untuk pelacakan dan Anda harus membuang sumber daya ini, maka Anda harus memodifikasi sampel ini sesuai dengan praktik terbaik untuk membuang sumber daya yang tidak dikelola. Untuk informasi selengkapnya tentang membuang sumber daya yang tidak dikelola, lihat Menerapkan Metode Buang.

Self-Hosting vs. Web Hosting

Untuk layanan yang dihosting di web, pelacakan analitik WCF menyediakan sebuah bidang yang disebut "HostReference", yang digunakan untuk mengidentifikasi layanan yang menghasilkan jejak tersebut. Jejak pengguna yang dapat diperluas dapat berpartisipasi dalam model ini dan sampel ini menunjukkan praktik terbaik untuk melakukannya. Format referensi host Web saat karakter pipa '|' benar-benar muncul dalam string yang dihasilkan bisa menjadi salah satu dari berikut ini:

  • Jika aplikasi tidak berada di root.

    <SiteName><ApplicationVirtualPath>|<ServiceVirtualPath>|<ServiceName>

  • Jika aplikasi berada di root.

    <SiteName>|<ServiceVirtualPath>|<ServiceName>

Untuk layanan yang dihost sendiri, jejak analitik WCF tidak mengisi bidang "HostReference". Kelas WCFUserEventProvider dalam sampel ini bertingkah konsisten saat digunakan oleh layanan yang dihost sendiri.

Detail Acara Kustom

Manifes Penyedia Peristiwa ETW WCF mendefinisikan tiga peristiwa yang dirancang untuk dipancarkan oleh penulis layanan WCF dari dalam kode layanan. Tabel berikut ini memperlihatkan perincian tiga peristiwa.

Peristiwa Deskripsi ID Peristiwa
PeristiwaInformasiDidefinisikanPenggunaTerjadi Terbitkan acara ini ketika ada sesuatu yang penting terjadi dalam layanan Anda yang bukan merupakan masalah. Misalnya, Anda mungkin memancarkan peristiwa setelah berhasil melakukan panggilan ke database. 301
PeringatanDitetapkanPenggunaTerjadi Keluarkan peristiwa ini ketika terjadi masalah yang dapat mengakibatkan kegagalan di masa mendatang. Misalnya, Anda dapat mengeluarkan peringatan ketika panggilan ke database gagal tetapi Anda dapat memulihkan dengan kembali ke penyimpanan data cadangan. 302
KesalahanDidefinisikanPenggunaTerjadi Keluarkan peristiwa ini ketika layanan Anda gagal bereaksi seperti yang diharapkan. Misalnya, Anda mungkin memancarkan peristiwa jika panggilan ke database gagal dan Anda tidak dapat mengambil data dari tempat lain. 303

Untuk menggunakan sampel ini

  1. Menggunakan Visual Studio, buka file solusi WCFAnalyticTracingExtensibility.sln.

  2. Untuk membangun solusi, tekan Ctrl+Shift+B.

  3. Untuk menjalankan solusi, tekan Ctrl+F5.

    Di browser Web, klik Kalkulator.svc. URI dokumen WSDL untuk layanan akan muncul di browser. Salin URI itu.

  4. Jalankan klien uji WCF (WcfTestClient.exe).

    Klien pengujian WCF (WcfTestClient.exe) terletak di \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exe.

  5. Dalam klien uji WCF, tambahkan layanan dengan memilih File, lalu Tambahkan Layanan.

    Tambahkan alamat titik akhir di kotak input.

  6. Klik OK untuk menutup dialog.

    Layanan ICalculator ditambahkan di panel kiri di bawah Proyek Layanan Saya.

  7. Buka aplikasi Penampil Peristiwa.

    Sebelum memanggil layanan, mulai Penampil Peristiwa dan pastikan bahwa log peristiwa memantau peristiwa pelacakan yang dikeluarkan dari layanan WCF.

  8. Dari menu Mulai , pilih Alat Administratif, lalu Penampil Peristiwa. Aktifkan log Analitik dan Debug .

  9. Dalam tampilan pohon di Penampil Peristiwa, navigasikan ke Penampil Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, lalu Application Server-Applications. Klik kanan Application Server-Applications, pilih Lihat, lalu Tampilkan Log Analitik dan Debug.

    Pastikan bahwa opsi Tampilkan Log Analitik dan Debug dicentang. Aktifkan log Analitik.

    Dalam tampilan pohon di Penampil Peristiwa, navigasikan ke Penampil Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, Application Server-Applications, lalu Analytic. Klik kanan Analitik dan pilih Aktifkan Log.

  10. Uji layanan menggunakan WCF Test Client.

    1. Di Klien Uji WCF, klik dua kali Add() di bawah simpul layanan ICalculator.

      Metode Add() muncul di panel kanan dengan dua parameter.

    2. Ketik 2 untuk parameter pertama dan 3 untuk parameter kedua.

    3. Klik Panggil untuk memanggil metode .

  11. Buka jendela Penampil Peristiwa yang telah Anda buka. Navigasikan ke Penampil Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, Aplikasi-Server Aplikasi.

  12. Klik kanan simpul Analitik dan pilih Refresh.

    Peristiwa muncul di panel kanan.

  13. Temukan peristiwa dengan ID 303 dan klik dua kali untuk membukanya dan memeriksa kontennya.

    Kejadian ini dipancarkan oleh metode Add() layanan ICalculator dengan payload yang sama dengan "2+3=5".

Untuk membersihkan (Opsional)

  1. Buka Pemantau Peristiwa.

  2. Navigasikan ke Penampil Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, lalu Application-Server-Applications. Klik kanan Analitik dan pilih Nonaktifkan Log.

  3. Buka Penampil Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, Application-Server-Applications, lalu Analytic. Klik kanan Analitik dan pilih Hapus Log.

  4. Klik Hapus untuk menghapus peristiwa.

Masalah yang diketahui

Ada masalah yang diketahui di Penampil Peristiwa di mana mungkin gagal mendekode peristiwa ETW. Anda mungkin melihat pesan kesalahan yang mengatakan: "Deskripsi untuk ID <id> dari sumber Microsoft-Windows-Application Server-Applications tidak dapat ditemukan. Komponen yang menaikkan kejadian ini tidak dipasang pada komputer lokal Anda atau penginstalan rusak. Anda dapat menginstal atau memperbaiki komponen di komputer lokal." Jika Anda mengalami kesalahan ini, pilih Refresh dari menu Tindakan . Peristiwa kemudian harus didekode dengan benar.

Lihat juga