Aracılığıyla paylaş


WCF Analitik İzleme

WCFAnalyticTracingExtensibility örneği, Windows Communication Foundation'ın (WCF) .NET Framework'te ETW'ye yazdığı analiz izlemeleri akışına kendi izleme olaylarınızı nasıl ekleyebileceğinizi gösterir. Analiz izlemeleri, yüksek performans cezası ödemeden hizmetlerinize görünürlük sağlamayı kolaylaştırmaya yöneliktir. Bu örnek, API'lerin System.Diagnostics.Eventing WCF hizmetleriyle tümleşen olaylar yazmak için nasıl kullanılacağını gösterir.

API'ler hakkında daha fazla bilgi için System.Diagnostics.Eventing bakınız System.Diagnostics.Eventing.

Windows'da olay izleme hakkında daha fazla bilgi edinmek için bkz. ETW ile Hata Ayıklamayı ve Performans Ayarlamayı Geliştirme.

EventProvider'ın atılması

Bu örnek, System.Diagnostics.Eventing.EventProvider'ı uygulayan System.IDisposable sınıfını kullanır. WCF hizmeti için izleme uygularken, hizmetin kullanım ömrü boyunca muhtemelen EventProvider'nin kaynaklarını kullanabilirsiniz. Bu nedenle ve okunabilirlik açısından, bu örnek, sarılı EventProvider öğesini asla atmaz. Bazı nedenlerden dolayı hizmetinizin izleme için farklı gereksinimleri varsa ve bu kaynağı atmanız gerekiyorsa, bu örneği yönetilmeyen kaynakların imhası için en iyi yöntemlere uygun olarak değiştirmeniz gerekir. Yönetilmeyen kaynakları yok etme hakkında daha fazla bilgi için bkz. Dispose Yöntemi Uygulama.

Self-Hosting ve Web Barındırma karşılaştırması

Web'de barındırılan hizmetler için WCF'nin analiz izlemeleri, izlemeleri yayan hizmeti tanımlamak için kullanılan "HostReference" adlı bir alan sağlar. Genişletilebilir kullanıcı izlemeleri bu modele katılabilir ve bu örnek bunu yapmak için en iyi yöntemleri gösterir. Sonuçta elde edilen dizede '|' kanalı karakteri göründüğünde Web konağı başvurusunun biçimi aşağıdakilerden biri olabilir:

  • Uygulama kök dizinde değilse.

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

  • Uygulama ana dizindeyse.

    <SiteAdı>|<ServiceVirtualPath>|<ServiceName>

Kendi kendine barındırılan hizmetler için WCF'nin analitik izleri "HostReference" alanını doldurmaz. WCFUserEventProvider Bu örnekteki sınıf, kendi kendine barındırılan bir hizmet tarafından kullanıldığında tutarlı bir şekilde davranır.

Özel Olay Ayrıntıları

WCF'nin ETW Olay Sağlayıcısı bildirimi, WCF hizmet yazarları tarafından hizmet kodu içinden yayılacak şekilde tasarlanmış üç olayı tanımlar. Aşağıdaki tabloda üç olayın dökümü gösterilmektedir.

Etkinlik Açıklama Olay Kimliği
KullanıcıTanımlıBilgiOlayıGerçekleşti Hizmetinizde dikkate değer bir şey olduğunda, sorun olmayan bir olayı tetikleyin. Örneğin, bir veritabanına başarıyla çağrı yaptıktan sonra bir olay yayabilirsiniz. 301
Kullanıcı Tanımlı Uyarı Oluştu Gelecekte hataya neden olabilecek bir sorun oluştuğunda bu olayı yayın. Örneğin, veritabanına yönelik bir çağrı başarısız olduğunda bir uyarı olayı yayabilirsiniz, ancak yedekli bir veri deposuna geri dönerek kurtarabilirsiniz. 302
Kullanıcı Tanımlı Hata Oluştu Hizmetiniz beklendiği gibi davranmadığında bu olayı yayın. Örneğin, veritabanına yapılan bir çağrı başarısız olursa ve verileri başka bir yerden alamazsanız bir olay yayabilirsiniz. 303

Bu örneği kullanmak için

  1. Visual Studio'yu kullanarak WCFAnalyticTracingExtensibility.sln çözüm dosyasını açın.

  2. Çözümü oluşturmak için Ctrl+ ShiftB+ basın.

  3. Çözümü çalıştırmak için CtrlF5+ basın.

    Web tarayıcısında Calculator.svc'ye tıklayın. Hizmet için WSDL belgesinin URI'sinin tarayıcıda görünmesi gerekir. Bu URI'yı kopyalayın.

  4. WCF test istemcisini (WcfTestClient.exe) çalıştırın.

    WCF test istemcisi (WcfTestClient.exe) konumunda \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exebulunur.

  5. WCF test istemcisinin içinde Dosya'yı ve ardından Hizmet Ekle'yi seçerek hizmeti ekleyin.

    Giriş kutusuna uç nokta adresini ekleyin.

  6. İletişim kutusunu kapatmak için Tamam'a tıklayın.

    ICalculator hizmeti, Hizmet Projelerim'in altındaki sol bölmeye eklenir.

  7. Olay Görüntüleyicisi uygulamasını açın.

    Hizmeti çağırmadan önce Olay Görüntüleyicisi'ni başlatın ve olay günlüğünün WCF hizmetinden yayılan olayları izlediğinden emin olun.

  8. Başlatmenüsünden Yönetim Araçları'nı ve ardından Olay Görüntüleyicisi'ni seçin. Analiz ve Hata Ayıklama günlüklerini etkinleştirin.

  9. Olay Görüntüleyicisi'ndeki ağaç görünümünde Olay Görüntüleyicisi, Uygulamalar ve Hizmet Günlükleri, Microsoft, Windows ve ardından Uygulama Sunucusu-Uygulamaları'na gidin. Uygulama Sunucusu-Uygulamalar'a sağ tıklayın, Görünüm'ü ve ardından Analiz ve Hata Ayıklama Günlüklerini Göster'i seçin.

    Analiz ve Hata Ayıklama Günlüklerini Göster seçeneğinin işaretli olduğundan emin olun. Analitik günlüğünü etkinleştirin.

    Olay Görüntüleyicisi'ndeki ağaç görünümünde Olay Görüntüleyicisi, Uygulamalar ve Hizmet Günlükleri, Microsoft, Windows, Application Server-Applications ve ardından Analytic'e gidin. Analitik'e sağ tıklayın ve Günlüğü Etkinleştir'i seçin.

  10. WCF Test İstemcisi'ni kullanarak hizmeti test edin.

    1. WCF Test İstemcisi'nde, ICalculator hizmet düğümü altında Add() öğesine çift tıklayın.

      Add() yöntemi sağ bölmede iki parametreyle görüntülenir.

    2. İlk parametre için 2, ikinci parametre için 3 yazın.

    3. Yöntemini çağırmak için Çağır'a tıklayın.

  11. Zaten açmış olduğunuz Olay Görüntüleyicisi penceresine gidin. Olay Görüntüleyicisi, Uygulamalar ve Hizmet Günlükleri, Microsoft, Windows, Uygulama Sunucusu-Uygulamaları'na gidin.

  12. Analiz düğümüne sağ tıklayın ve Yenile'yi seçin.

    Olaylar sağ bölmede görünür.

  13. Kimliği 303 olan olayı bulun ve çift tıklayarak açın ve içeriğini inceleyin.

    Bu olay ICalculator hizmetinin yöntemi tarafından Add() yayılmıştır ve "2+3=5" değerine eşit bir yüke sahiptir.

Temizlemek için (İsteğe bağlı)

  1. Olay Görüntüleyicisi'ni açın.

  2. Olay Görüntüleyicisi, Uygulamalar ve Hizmet Günlükleri, Microsoft, Windows ve ardından Application-Server-Applications'a gidin. Analitik'e sağ tıklayın ve Günlüğü Devre Dışı Bırak'ı seçin.

  3. Olay Görüntüleyicisi, Uygulamalar ve Hizmet Günlükleri, Microsoft, Windows, Application-Server-Applications ve ardından Analytic'e gidin. Analitik'e sağ tıklayın ve Günlüğü Temizle'yi seçin.

  4. Olayları temizlemek için Temizle'ye tıklayın.

Bilinen Sorun

Olay Görüntüleyicisi'nde ETW olaylarının kodunu çözemeyebileceği bilinen bir sorun vardır. Şu hata iletisini görebilirsiniz: "Kaynak Microsoft-Windows-Application Server-Applications'den Olay Kimliği <kimliği> açıklaması bulunamadı." Bu olayı tetikleyen bileşen yerel bilgisayarınızda yüklü değil veya yükleme bozuk. Bileşeni yerel bilgisayara yükleyebilir veya onarabilirsiniz." Bu hatayla karşılaşırsanız Eylemlermenüsünden Yenile'yi seçin. Daha sonra olayın kodunu düzgün bir şekilde çözmesi gerekir.

Ayrıca bakınız