Udostępnij za pośrednictwem


Śledzenie danych analitycznych programu 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. Ślady analityczne mają ułatwić wgląd w usługi bez płacenia kary za wysoką wydajność. W tym przykładzie pokazano, jak używać System.Diagnostics.Eventing interfejsów API do pisania zdarzeń integrujących się z usługami WCF.

Aby uzyskać więcej informacji na temat System.Diagnostics.Eventing interfejsów API, 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 System.Diagnostics.Eventing.EventProvider klasy , która implementuje System.IDisposableelement . Podczas implementowania śledzenia dla usługi WCF prawdopodobnie możesz używać EventProviderzasobów przez cały okres istnienia usługi. Z tego powodu i dla czytelności ta próbka nigdy nie usuwa opakowanego EventProviderelementu . 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.

Hosting własny 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ę self-hosted.

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ń.

Wydarzenie opis Identyfikator zdarzenia
UserDefinedInformationEventOccurred Emituj to zdarzenie, gdy coś notatki dzieje się w usłudze, która nie jest problemem. Można na przykład emitować zdarzenie po pomyślnym wywołaniu bazy danych. 301
UserDefinedWarningOccurred 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
UserDefinedErrorOccurred 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 użyć tego przykładu

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

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

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

    W przeglądarce internetowej kliknij pozycję Calculator.svc. Identyfikator URI dokumentu WSDL dla usługi powinien zostać wyświetlony 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 Administracja istracyjne, a następnie Podgląd zdarzeń. Włącz dzienniki analityczne i debugowania.

  9. W widoku drzewa w Podgląd zdarzeń przejdź do pozycji Podgląd zdarzeń, dzienniki aplikacji i usług, Microsoft, Windows, a następnie pozycję Application Server-Applications. 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ąd zdarzeń 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 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ń, dzienników aplikacji i usług, Firmy Microsoft, Windows, Application Server-Applications.

  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 Podgląd zdarzeń, dzienników aplikacji i usług, microsoft, Windows, application-server-applications, a następnie analizy. Kliknij prawym przyciskiem myszy pozycję Analityczne i wybierz polecenie Wyczyść dziennik.

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

Znany problem

W Podgląd zdarzeń występuje znany problem, który może nie dekodować zdarzeń ETW. Może zostać wyświetlony komunikat o błędzie z informacją: "Nie można odnaleźć opisu identyfikatora <> zdarzenia 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 następnie prawidłowo dekodować.

Zobacz też