Ś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
Za pomocą programu Visual Studio otwórz plik rozwiązania WCFAnalyticTracingExtensibility.sln.
Aby skompilować rozwiązanie, naciśnij klawisze Ctrl+Shift+B.
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.
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
.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.
Kliknij przycisk OK , aby zamknąć okno dialogowe.
Usługa ICalculator jest dodawana w okienku po lewej stronie w obszarze Moje projekty usług.
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.
Z menu Start wybierz pozycję narzędzia Administracja istracyjne, a następnie Podgląd zdarzeń. Włącz dzienniki analityczne i debugowania.
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.
Przetestuj usługę przy użyciu klienta testowego programu WCF.
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.
Wpisz wartość 2 dla pierwszego parametru i 3 dla drugiego parametru.
Kliknij przycisk Wywołaj, aby wywołać metodę.
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.
Kliknij prawym przyciskiem myszy węzeł analityczny i wybierz polecenie Odśwież.
Zdarzenia są wyświetlane w okienku po prawej stronie.
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)
Otwórz Podgląd zdarzeń.
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.
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.
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ć.