Overzicht van berichtenstroom
In een gedistribueerd systeem met onderling verbonden services is het noodzakelijk om causale relaties tussen de services te bepalen. Het is belangrijk om inzicht te krijgen in de verschillende onderdelen die deel uitmaken van een aanvraagstroom ter ondersteuning van kritieke scenario's, zoals statuscontrole, probleemoplossing en analyse van hoofdoorzaak. Om de correlatie van traceringen tussen verschillende services mogelijk te maken, hebben we in .NET Framework 4 ondersteuning toegevoegd via de volgende functies:
Analytische tracering: een functie voor hoge prestaties en een lage uitgebreidheidstracering met behulp van Event Tracing voor Windows (ETW).
End-to-end-activiteitsmodel voor WCF-/WF-services: deze functie ondersteunt correlatie van traceringen die worden gegenereerd door de System.ServiceModel en System.Workflow.ComponentModel naamruimten.
ETW-tracering voor WF: deze functie maakt gebruik van traceringsrecords die zijn gegenereerd door WF-services om inzicht te krijgen in de huidige status en voortgang van de werkstroom.
Fouten die zijn vastgelegd in een tracerings- of traceringsrecord, kunnen worden gebruikt om codefouten of onjuist gevormde berichten te vinden. De eigenschap ActivityId van het correlatieknooppunt in de berichtkop van de gebeurtenis kan worden gebruikt om de foutieve activiteit te bepalen. Zie Tracering van berichtstromen configureren om tracering van berichtenstromen in te schakelen op activiteits-id. In dit onderwerp ziet u hoe u tracering van berichtenstromen inschakelt in het project dat is gemaakt in de zelfstudie Aan de slag.
Berichtenstroomtracering inschakelen in de zelfstudie Aan de slag
Open Logboeken door te klikken op Start, Uitvoeren en invoeren
eventvwr.exe
.Als u analytische tracering niet hebt ingeschakeld, vouwt u toepassingen en serviceslogboeken, Microsoft, Windows, Application Server-Applications uit. Selecteer Weergave, Analyse- en foutopsporingslogboeken weergeven. Klik met de rechtermuisknop op Analyse en selecteer Logboek inschakelen. Laat Logboeken open zodat traceringen kunnen worden weergegeven.
Open het voorbeeld dat u hebt gemaakt in de zelfstudie Aan de slag in Visual Studio 2012. Houd er rekening mee dat u Visual Studio 2012 als beheerder moet uitvoeren, zodat de service kan worden gemaakt. Als u de WCF-voorbeelden hebt geïnstalleerd, kunt u het aan de slag openen, dat het voltooide project bevat dat in de zelfstudie is gemaakt.
Klik met de rechtermuisknop op het serviceproject en selecteer Toevoegen, nieuw item. Selecteer Toepassingsconfiguratiebestand en klik op OK.
Voeg de volgende code toe aan het App.Config-bestand dat u in de vorige stap hebt gemaakt.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>
Voer de servertoepassing uit zonder foutopsporing door op Ctrl+F5 te drukken. Voer het clientproject uit door met de rechtermuisknop op het clientproject te klikken en Fouten opsporen te selecteren, Nieuw exemplaar starten.
Als u de gebeurtenissen van de client naar de server wilt traceren, voegt u het volgende toe aan het toepassingsconfiguratiebestand in het clientproject.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>
Voeg in Program.cs de client de volgende
using
instructie toe.using System.Diagnostics;
Stel in de
Main
methode in het program.cs-bestand in het clientproject de tracerings-GUID in dat moet worden doorgegeven in het gebeurtenislogboek.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;
Vernieuw het analyselogboek en bekijk het. Zoek naar een gebeurtenis met gebeurtenis-id 220. Selecteer de gebeurtenis en klik op het tabblad Details in het voorbeeldvenster. Deze gebeurtenis bevat de correlatie-id voor de aanroepende activiteit.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />
Notitie
Alle gebeurtenissen met dezelfde GUID in de ActivityID zijn gerelateerd aan één aanvraag. Dit kan worden gebruikt om berichten van een specifieke client te correleren met een specifieke service. Als de client een andere service aangeroepen heeft, kan dezelfde client worden geïdentificeerd door ActivityID.
In sommige gevallen kan de ActivityID worden gewijzigd van de oorspronkelijke GUID in een nieuwe ActivityID. In dat geval wordt er een overdrachts gebeurtenis verzonden. Deze gebeurtenis-id is 499 en de gebeurtenis bevat de volgende gegevens in de header.
<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>
Notitie
De overdrachtsgebeurtenis registreert de wijziging van de actieve ActivityID van de GUID die is opgegeven als de ActivityID naar de GUID die is opgegeven als RelatedActivityID. Nadat de overdrachtsgebeurtenis is verzonden, bevatten alle gebeurtenissen de nieuwe GUID als de ActivityID.