Przegląd przepływu komunikatu
W systemie rozproszonym zawierającym połączone usługi należy określić relacje przyczynowe między usługami. Ważne jest, aby zrozumieć różne składniki, które były częścią przepływu żądań w celu obsługi krytycznych scenariuszy, takich jak monitorowanie kondycji, rozwiązywanie problemów i analiza głównej przyczyny. Aby włączyć korelację śladów między różnymi usługami, w programie .NET Framework 4 dodaliśmy obsługę za pomocą następujących funkcji:
Śledzenie analityczne: funkcja śledzenia o wysokiej wydajności i niskiej szczegółowości przy użyciu funkcji śledzenia zdarzeń dla systemu Windows (ETW).
Model kompleksowej aktywności dla usług WCF/WF: ta funkcja obsługuje korelację śladów generowanych przez System.ServiceModel przestrzenie nazw i System.Workflow.ComponentModel .
Śledzenie ETW dla platformy WF: ta funkcja używa rekordów śledzenia generowanych przez usługi WF w celu zapewnienia wglądu w bieżący stan i postęp przepływu pracy.
Błędy zarejestrowane w rekordzie śledzenia lub śledzenia mogą służyć do znajdowania wad kodu lub niepoprawnie sformułowanych komunikatów. Właściwość ActivityId węzła Correlation w nagłówku komunikatu zdarzenia może służyć do określenia działania powodującego błędy. Aby włączyć śledzenie przepływu komunikatów według identyfikatora działania, zobacz Konfigurowanie śledzenia przepływu komunikatów. W tym temacie pokazano, jak włączyć śledzenie przepływu komunikatów w projekcie utworzonym w samouczku Wprowadzenie.
Aby włączyć śledzenie przepływu komunikatów w samouczku Wprowadzenie
Otwórz Podgląd zdarzeń, klikając pozycję Uruchom, Uruchom i wprowadzając polecenie
eventvwr.exe
.Jeśli nie włączono śledzenia analitycznego, rozwiń węzeł Dzienniki aplikacji i usług, Microsoft, Windows, Application Server-Applications. Wybierz pozycję Widok, Pokaż dzienniki analityczne i debugowania. Kliknij prawym przyciskiem myszy pozycję Analityczne i wybierz pozycję Włącz dziennik. Pozostaw Podgląd zdarzeń otwarte, aby można było wyświetlić ślady.
Otwórz przykład utworzony w samouczku wprowadzenie w programie Visual Studio 2012. Należy pamiętać, że musisz uruchomić program Visual Studio 2012 jako administrator, aby można było utworzyć usługę. Jeśli masz zainstalowane przykłady WCF, możesz otworzyć wprowadzenie, który zawiera ukończony projekt utworzony w samouczku.
Kliknij prawym przyciskiem myszy projekt Usługi i wybierz pozycję Dodaj, Nowy element. Wybierz pozycję Plik konfiguracji aplikacji i kliknij przycisk OK.
Dodaj następujący kod do pliku App.Config utworzonego w poprzednim kroku.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>
Wykonaj aplikację serwera bez debugowania, naciskając CTRL+F5. Wykonaj projekt klienta, klikając prawym przyciskiem myszy projekt Klient i wybierając polecenie Debuguj, Uruchom nowe wystąpienie.
Aby śledzić zdarzenia z klienta do serwera, dodaj następujący kod do pliku konfiguracji aplikacji w projekcie Klient.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>
W Program.cs w kliencie dodaj następującą
using
dyrektywę.using System.Diagnostics;
W metodzie
Main
w pliku program.cs w projekcie klienta ustaw identyfikator GUID śledzenia, który ma być propagowany w dzienniku zdarzeń.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;
Odśwież i sprawdź dziennik analityczny . Poszukaj zdarzenia o identyfikatorze zdarzenia 220. Wybierz zdarzenie, a następnie kliknij kartę Szczegóły w okienku podglądu. To zdarzenie będzie zawierać identyfikator korelacji dla działania wywołującego.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />
Uwaga
Wszystkie zdarzenia z tym samym identyfikatorem GUID w identyfikatorze ActivityID są powiązane z jednym żądaniem. Może to służyć do korelowania komunikatów z określonego klienta do określonej usługi. Jeśli klient nazwał inną usługę, ten sam klient może zostać zidentyfikowany za pomocą identyfikatora ActivityID.
W niektórych przypadkach identyfikator ActivityID może zmienić się z oryginalnego identyfikatora GUID na nowy identyfikator ActivityID. W takim przypadku jest emitowane zdarzenie transferu. Ten identyfikator zdarzenia to 499, a zdarzenie będzie zawierać następujące dane w nagłówku.
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-Application Server-Applications" Guid="{c651f5f6-1c0d-492e-8ae1-b4efd7c9d503}" /> <EventID>499</EventID> ... <Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" RelatedActivityID="{85FC0930-9C49-42DA-804B-A7368104BD1B}" /> ... </System> </Event>
Uwaga
Zdarzenie transferu rejestruje zmianę aktywnego identyfikatora ActivityID z identyfikatora GUID określonego jako Identyfikator działania na identyfikator GUID określony jako RelatedActivityID. Po emitowanym zdarzeniu transferu wszystkie zdarzenia będą zawierać nowy identyfikator GUID jako Identyfikator działania.