Udostępnij za pośrednictwem


Śledzenie analityczne WCF

Przykład WCFAnalyticTracingExtensibility pokazuje, jak dodać własne zdarzenia śledzenia do strumienia śladów analitycznych zapisywanych przez program Windows Communication Foundation (WCF) w programie .NET Framework. Analizy śladów mają ułatwić uzyskanie wglądu w Twoje usługi bez ponoszenia dużych kosztów w postaci spadku wydajności. Ten przykład pokazuje, jak używać API do pisania zdarzeń integrujących się z usługami WCF.

Aby uzyskać więcej informacji na temat interfejsów API System.Diagnostics.Eventing, zobacz System.Diagnostics.Eventing.

Aby dowiedzieć się więcej na temat śledzenia zdarzeń w systemie Windows, zobacz Ulepszanie debugowania i dostrajania wydajności przy użyciu funkcji ETW.

Usuwanie dostawcy zdarzeń

W tym przykładzie użyto klasy System.Diagnostics.Eventing.EventProvider, która implementuje System.IDisposable element. Podczas implementowania śledzenia dla usługi WCF prawdopodobnie będziesz używać zasobów EventProvider przez cały okres istnienia usługi. Z tego powodu i dla czytelności ta próbka nigdy nie usuwa opakowanego elementu EventProvider. Jeśli z jakiegoś powodu usługa ma inne wymagania dotyczące śledzenia i musisz usunąć ten zasób, należy zmodyfikować ten przykład zgodnie z najlepszymi rozwiązaniami dotyczącymi usuwania zasobów niezarządzanych. Aby uzyskać więcej informacji na temat usuwania niezarządzanych zasobów, zobacz Implementowanie metody Dispose.

Self-Hosting a hosting internetowy

W przypadku usług hostowanych w sieci Web ślady analityczne WCF udostępniają pole o nazwie "HostReference", które służy do identyfikowania usługi, która emituje ślady. Rozszerzalne ślady użytkowników mogą uczestniczyć w tym modelu, a w tym przykładzie przedstawiono najlepsze rozwiązania w tym celu. Format odwołania hosta sieci Web, gdy znak potoku '|' rzeczywiście pojawia się w wynikowym ciągu, może być jednym z następujących elementów:

  • Jeśli aplikacja nie znajduje się w katalogu głównym.

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

  • Jeśli aplikacja znajduje się w katalogu głównym.

    < >Nazwa witryny |<ServiceVirtualPath>|<ServiceName>

W przypadku usług hostowanych samodzielnie ślady analityczne WCF nie wypełniają pola "HostReference". Klasa WCFUserEventProvider w tym przykładzie zachowuje się spójnie w przypadku użycia przez usługę hostowaną samodzielnie.

Szczegóły zdarzenia niestandardowego

Manifest dostawcy zdarzeń ETW programu WCF definiuje trzy zdarzenia, które mają być emitowane przez autorów usługi WCF z poziomu kodu usługi. W poniższej tabeli przedstawiono podział trzech zdarzeń.

Zdarzenie Opis Identyfikator zdarzenia
Wystąpiło Zdarzenie Informacyjne Zdefiniowane Przez Użytkownika Emituj to zdarzenie, gdy coś godnego uwagi dzieje się w twojej usłudze, ale nie jest to problem. Można na przykład emitować zdarzenie po pomyślnym wywołaniu bazy danych. 301
Wystąpiło Ostrzeżenie Zdefiniowane Przez Użytkownika Emituj to zdarzenie, gdy wystąpi problem, który może spowodować awarię w przyszłości. Na przykład możesz emitować zdarzenie ostrzegawcze, gdy wywołanie bazy danych zakończy się niepowodzeniem, ale udało Ci się odzyskać, wracając do nadmiarowego magazynu danych. 302
Wystąpił zdefiniowany przez użytkownika błąd Emituj to zdarzenie, gdy usługa nie działa zgodnie z oczekiwaniami. Na przykład można emitować zdarzenie, jeśli wywołanie bazy danych nie powiedzie się i nie można pobrać danych z innego miejsca. 303

Aby skorzystać z tego przykładu

  1. Za pomocą programu Visual Studio otwórz plik rozwiązania WCFAnalyticTracingExtensibility.sln.

  2. Aby skompilować rozwiązanie, naciśnij Ctrl+Shift+B.

  3. Aby uruchomić rozwiązanie, naciśnij Ctrl+F5.

    W przeglądarce internetowej kliknij pozycję Calculator.svc. Identyfikator URI dokumentu WSDL dla usługi powinien pojawić się w przeglądarce. Skopiuj ten identyfikator URI.

  4. Uruchom klienta testowego programu WCF (WcfTestClient.exe).

    Klient testowy programu WCF (WcfTestClient.exe) znajduje się w lokalizacji \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exe.

  5. W kliencie testowym programu WCF dodaj usługę, wybierając pozycję Plik, a następnie pozycję Dodaj usługę.

    Dodaj adres punktu końcowego w polu wejściowym.

  6. Kliknij przycisk OK , aby zamknąć okno dialogowe.

    Usługa ICalculator jest dodawana w okienku po lewej stronie w obszarze Moje projekty usług.

  7. Otwórz aplikację Podgląd zdarzeń.

    Przed wywołaniem usługi uruchom Podgląd zdarzeń i upewnij się, że dziennik zdarzeń nasłuchuje śledzenia zdarzeń emitowanych z usługi WCF.

  8. Z menu Start wybierz pozycję Narzędzia administracyjne, a następnie Podgląd zdarzeń. Włącz dzienniki analityczne i debugowania .

  9. W widoku drzewa w Podglądzie zdarzeń przejdź do Podgląd zdarzeń, Dzienniki aplikacji i usług, Microsoft, Windows, a następnie Serwer aplikacji - aplikacje. Kliknij prawym przyciskiem myszy pozycję Aplikacje serwera aplikacji, wybierz pozycję Widok, a następnie pozycję Pokaż dzienniki analityczne i debugowania.

    Upewnij się, że opcja Pokaż dzienniki analityczne i debugowania jest zaznaczona. Włącz dziennik analityczny .

    W widoku drzewa w Podglądzie zdarzeń przejdź do Podgląd zdarzeń, Dzienniki aplikacji i usług, Microsoft, Windows, Application Server-Applications, a następnie Analityczne. Kliknij prawym przyciskiem myszy pozycję Analityczne i wybierz pozycję Włącz dziennik.

  10. Przetestuj usługę przy użyciu klienta testowego programu WCF.

    1. W kliencie testowym programu WCF kliknij dwukrotnie pozycję Add() w węźle usługi ICalculator.

      Metoda Add() zostanie wyświetlona w okienku po prawej stronie z dwoma parametrami.

    2. Wpisz wartość 2 dla pierwszego parametru i 3 dla drugiego parametru.

    3. Kliknij przycisk Wywołaj , aby wywołać metodę.

  11. Przejdź do okna Podgląd zdarzeń , które zostało już otwarte. Przejdź do Podgląd zdarzeń, Dzienniki aplikacji i usług, Microsoft, Windows, Serwer aplikacji - Aplikacje.

  12. Kliknij prawym przyciskiem myszy węzeł analityczny i wybierz polecenie Odśwież.

    Zdarzenia są wyświetlane w okienku po prawej stronie.

  13. Znajdź zdarzenie o identyfikatorze 303 i kliknij je dwukrotnie, aby otworzyć je i sprawdzić jego zawartość.

    To zdarzenie zostało wyemitowane przez Add() metodę usługi ICalculator i ma ładunek równy "2+3=5".

Aby wyczyścić (opcjonalnie)

  1. Otwórz Podgląd zdarzeń.

  2. Przejdź do pozycji Podgląd zdarzeń, Dzienniki aplikacji i usług, Microsoft, Windows, a następnie Application-Server-Applications. Kliknij prawym przyciskiem myszy pozycję Analityczne i wybierz polecenie Wyłącz dziennik.

  3. Przejdź do pozycji Podgląd zdarzeń, Dzienniki aplikacji i usług, Microsoft, Windows, Application-Server-Applications, a następnie analityczne. Kliknij prawym przyciskiem myszy pozycję Analityczne i wybierz polecenie Wyczyść dziennik.

  4. Kliknij przycisk Wyczyść , aby wyczyścić zdarzenia.

Znany problem

W Podglądzie zdarzeń występuje znany problem, który może nie dekodować zdarzeń ETW. Może zostać wyświetlony komunikat o błędzie, który mówi: "Nie można odnaleźć opisu dla Identyfikatora zdarzenia <id> ze źródła Microsoft-Windows-Application Server-Applications". Składnik, który zgłasza to zdarzenie, nie jest zainstalowany na komputerze lokalnym lub instalacja jest uszkodzona. Składnik można zainstalować lub naprawić na komputerze lokalnym. Jeśli wystąpi ten błąd, wybierz pozycję Odśwież w menu Akcje . Zdarzenie powinno zostać prawidłowo zdekodowane.

Zobacz także