Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano ślady aktywności w modelu śledzenia programu Windows Communication Foundation (WCF). Działania to jednostki przetwarzania, które ułatwiają użytkownikowi zawężenie zakresu awarii. Błędy występujące w tym samym działaniu są bezpośrednio powiązane. Na przykład operacja kończy się niepowodzeniem, ponieważ odszyfrowywanie komunikatów nie powiodło się. Ślady zarówno operacji, jak i niepowodzenia odszyfrowywania komunikatów są wyświetlane w tym samym działaniu, co pokazuje bezpośrednią korelację między błędem odszyfrowywania a błędem żądania.
Konfigurowanie śledzenia działań
Program WCF udostępnia wstępnie zdefiniowane działania do przetwarzania aplikacji (zobacz Lista działań). Można również programowo definiować działania w celu grupowania śladów użytkowników. Aby uzyskać więcej informacji, zobacz Emisja śladów User-Code.
Aby emitować ślady aktywności w czasie wykonywania, użyj ustawienia ActivityTracing dla źródła śledzenia System.ServiceModel lub innych źródeł śledzenia WCF lub niestandardowych, jak pokazano w poniższym kodzie konfiguracji.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Aby dowiedzieć się więcej na temat używanego elementu konfiguracji i atrybutów, zobacz temat Konfigurowanie śledzenia .
Wyświetlanie działań
Możesz wyświetlić działania i ich użyteczność w narzędziu Podgląd śledzenia usługi (SvcTraceViewer.exe). Gdy funkcja ActivityTracing jest włączona, to narzędzie pobiera ślady i sortuje je na podstawie działania. Można również zobaczyć transfery śledzenia. Transfer śledzenia wskazuje, jak różne działania są ze sobą powiązane. Widać, że określone działanie spowodowało uruchomienie innego działania. Na przykład żądanie wiadomości rozpoczęło uzgadnianie zabezpieczeń, aby uzyskać Token Bezpiecznej Rozmowy.
Korelowanie działań w przeglądarce śledzenia usług
Narzędzie Service Trace Viewer udostępnia dwa widoki działań:
Widok listy , w którym identyfikator działania jest używany do bezpośredniego korelowania śladów między procesami. Ślady z różnych procesów, na przykład klienta i usługi, ale z tym samym identyfikatorem działania są grupowane w tym samym działaniu. W związku z tym błąd występujący w usłudze, który następnie powoduje wystąpienie błędu na kliencie, zostanie wyświetlony w tym samym widoku działania w narzędziu.
Widok grafu , w którym działania są grupowane według procesów. W tym widoku klient i usługa o tym samym identyfikatorze działania mają swoje ślady w różnych działaniach. Aby skorelować działania z tym samym identyfikatorem działania w różnych procesach, narzędzie wyświetla przepływy komunikatów w powiązanych działaniach.
Aby uzyskać więcej informacji i zobaczyć widok graficzny narzędzia Service Trace Viewer, zobacz Narzędzie Przeglądu Śladu Usługi (SvcTraceViewer.exe) oraz Korzystanie z Narzędzia Przeglądu Śladu Usługi do Przeglądania Skorelowanych Śladów i Rozwiązywania Problemów.
Definiowanie zakresu działania
Działanie jest definiowane w czasie projektowania i określa jednostkę logiczną pracy. Emitowane ślady z tym samym identyfikatorem działania są bezpośrednio powiązane, są częścią tego samego działania. Ponieważ działanie może przekraczać granice punktów końcowych (żądanie), definiowane są dwa zakresy działania.
Globalzakres, na każdą aplikację. W tym zakresie działanie jest identyfikowane przez 128-bitowy globalny identyfikator działania, gAId. Identyfikator gAid jest propagowany między punktami końcowymi.Localzakres, dla każdego punktu końcowego. W tym zakresie działanie jest identyfikowane przez jego identyfikator gAId, wraz z nazwą źródła śledzenia emitującego ślady działania i identyfikator procesu. Ta trójka elementów stanowi lokalny identyfikator działania, lAId. Identyfikator lAId służy do definiowania (lokalnych) granic działania.
Schemat śledzenia
Ślady mogą być wysyłane przy użyciu dowolnego schematu i na różnych platformach Microsoft. "e2e" (dla "End to End") jest często używanym schematem. Ten schemat zawiera identyfikator 128-bitowy (gAId), nazwę źródła śledzenia i identyfikator procesu. W zarządzanym kodzie XmlWriterTraceListener emituje ślady w schemacie E2E.
Deweloperzy mogą ustawić AID emitowany ze śledzeniem, ustawiając właściwość ActivityId na identyfikator GUID w magazynie lokalnym wątku (TLS). W poniższym przykładzie pokazano to.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
Ustawienie identyfikatora gAId w protokole TLS będzie widoczne, gdy ślady są emitowane przy użyciu źródła śledzenia, jak pokazano w poniższym przykładzie.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
Ślad emitowany będzie zawierać identyfikator gAId aktualnie używany w warstwie TLS, nazwę źródła śledzenia przekazaną jako parametr konstruktora źródła śledzenia oraz identyfikator bieżącego procesu.
Okres istnienia działania
W najściślejszym znaczeniu, dowód działania zaczyna się, gdy identyfikator działania jest po raz pierwszy używany w emitowanym śladzie, i kończy się, gdy jest używany po raz ostatni w emitowanym śladzie. Wstępnie zdefiniowany zestaw typów śledzenia jest dostarczany przez System.Diagnostics, w tym Start i Stop, aby jawnie oznaczyć granice aktywności.
Początek: wskazuje początek działania. Ślad "Start" zawiera zapis rozpoczęcia nowego etapu przetwarzania. Zawiera nowy identyfikator działania dla danego źródła śledzenia w danym procesie, z wyjątkiem sytuacji, gdy identyfikator działania jest propagowany przez punkty końcowe, w takim przypadku widzimy jedno "Rozpoczęcie" dla każdego punktu końcowego. Przykłady uruchamiania nowego działania obejmują tworzenie nowego wątku do przetwarzania lub wprowadzanie nowej metody publicznej.
Zatrzymaj: wskazuje koniec działania. Ślad "Zatrzymaj" zawiera zapis zakończenia istniejącego etapu przetwarzania. Zawiera istniejący identyfikator działania dla danego źródła śledzenia w danym procesie, z wyjątkiem przypadku, gdy identyfikator działania jest przekazywany do punktu końcowego, wtedy widzimy komunikat "Zatrzymaj" dla każdego punktu końcowego. Przykłady zatrzymania działania obejmują zakończenie wątku przetwarzania lub zakończenie metody, której początek został oznaczony śladem "Start".
Wstrzymanie: wskazuje zawieszenie przetwarzania działania. Ślad "Wstrzymaj" zawiera istniejący identyfikator aktywności, którego przetwarzanie ma zostać wznowione później. Nie są emitowane żadne ślady z tym identyfikatorem między zdarzeniami wstrzymania i wznowienia z aktualnego źródła śledzenia. Przykłady obejmują wstrzymanie działania podczas wywoływania funkcji biblioteki zewnętrznej lub oczekiwania na zasób, taki jak port zakończenia operacji we/wy.
Wznów: wskazuje wznowienie przetwarzania działania. Ślad "Wznów" zawiera istniejący identyfikator działania, którego ostatnio emitowany ślad z bieżącego źródła śledzenia był śladem "Wstrzymaj". Przykłady obejmują powrót po wywołaniu funkcji biblioteki zewnętrznej lub sygnał do wznowienia przetwarzania przez zasób, taki jak port zakończenia operacji we/wy.
Transfer: ponieważ niektóre działania są spowodowane przez inne lub odnoszą się do innych, działania mogą być powiązane z innymi działaniami za pomocą śladów "Transfer". Transfer rejestruje skierowaną relację jednego działania z innym
Ślady uruchamiania i zatrzymywania nie są krytyczne dla korelacji. Mogą one jednak pomóc w zwiększeniu wydajności, profilowania i walidacji zakresu działań.
Za pomocą tych typów narzędzia mogą zoptymalizować nawigowanie po dziennikach śledzenia w celu znalezienia natychmiast powiązanych zdarzeń tego samego działania lub zdarzeń w powiązanych działaniach, jeśli narzędzie śledzi ślady transferu. Na przykład narzędzia przestaną parsować dzienniki dla danego działania, gdy zauważą ślady start/stop.
Te typy śledzenia mogą być również używane do profilowania. Zasoby używane między znacznikami uruchamiania i zatrzymywania reprezentują czas inkluzywny działania, w tym zawarte działania logiczne. Odejmowanie interwałów czasu między śladami wstrzymania i wznawiania zapewnia rzeczywisty czas działania.
Ślad zatrzymania jest również szczególnie przydatny do weryfikowania zakresu zrealizowanych działań. Jeśli niektóre ślady przetwarzania pojawiają się po zatrzymaniu śledzenia zamiast wewnątrz danego działania, może to sugerować usterkę kodu.
Wskazówki dotyczące korzystania ze śledzenia działań
Poniżej przedstawiono wytyczne dotyczące używania śladów ActivityTracing (Start, Stop, Suspend, Resume i Transfer).
Śledzenie jest skierowanym grafem cyklicznym, a nie drzewem. Możesz przywrócić kontrolę nad aktywnością, która zainicjowała inną aktywność.
Działanie określa granicę przetwarzania, która może być zrozumiała dla administratora systemu lub w celu zapewnienia obsługi.
Każda metoda WCF, zarówno na kliencie, jak i serwerze, jest powiązana przez rozpoczęcie nowego działania, a następnie (po zakończeniu pracy) zakończenie nowego działania i powrót do działania otoczenia.
Długotrwałe (trwające) działania, takie jak nasłuchiwanie połączeń lub oczekiwanie na komunikaty są reprezentowane przez odpowiednie znaczniki uruchamiania/zatrzymywania.
Działania wyzwalane przez potwierdzenie lub przetwarzanie komunikatu są reprezentowane przez granice śledzenia.
Działania reprezentują działania, a niekoniecznie obiekty. Działanie powinno być interpretowane jako "miało to miejsce, gdy . . . (wystąpiła znacząca emisja śladowa)."