Översikt över meddelandeflöde
I ett distribuerat system som innehåller sammankopplade tjänster är det nödvändigt att fastställa orsakssamband mellan tjänsterna. Det är viktigt att förstå de olika komponenter som ingick i ett begärandeflöde för att stödja kritiska scenarier som hälsoövervakning, felsökning och rotorsaksanalys. För att möjliggöra korrelationen mellan spårningar mellan olika tjänster har vi i .NET Framework 4 lagt till stöd via följande funktioner:
Analysspårning: En funktion med hög prestanda och låg utförlig spårning med händelsespårning för Windows (ETW).
Aktivitetsmodell från slutpunkt till slutpunkt för WCF/WF-tjänster: Den här funktionen stöder korrelation av spårningar som genereras av System.ServiceModel namnrymderna och System.Workflow.ComponentModel .
ETW-spårning för WF: Den här funktionen använder spårningsposter som genereras av WF-tjänster för att ge insyn i arbetsflödets aktuella tillstånd och förlopp.
Fel som loggas i en spårnings- eller spårningspost kan användas för att hitta kodfel eller felaktigt skapade meddelanden. Egenskapen ActivityId för korrelationsnoden i händelsens meddelandehuvud kan användas för att fastställa felaktiviteten. Information om hur du aktiverar spårning av meddelandeflöde efter aktivitets-ID finns i Konfigurera spårning av meddelandeflöde. Det här avsnittet visar hur du aktiverar spårning av meddelandeflöde i projektet som skapades i självstudien Komma igång.
Så här aktiverar du meddelandeflödesspårning i självstudien Komma igång
Öppna Loggboken genom att klicka på Start, Kör och ange
eventvwr.exe
.Om du inte har aktiverat analysspårning expanderar du Program- och tjänstloggar, Microsoft, Windows, Programserverprogram. Välj Visa, Visa analys- och felsökningsloggar. Högerklicka på Analys och välj Aktivera logg. Låt Loggboken vara öppna så att spårningar kan visas.
Öppna exemplet som skapades i självstudien Komma igång i Visual Studio 2012. Observera att du måste köra Visual Studio 2012 som administratör så att tjänsten kan skapas. Om du har installerat WCF-exemplen kan du öppna Komma igång, som innehåller det slutförda projektet som skapades i självstudien.
Högerklicka på serviceprojektet och välj Lägg till nytt objekt. Välj Programkonfigurationsfil och klicka på OK.
Lägg till följande kod i filen App.Config som skapades i föregående steg.
<system.serviceModel> <diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics> </system.serviceModel>
Kör serverprogrammet utan att felsöka genom att trycka på CTRL+F5. Kör klientprojektet genom att högerklicka på klientprojektet och välja Felsök, Starta ny instans.
Om du vill spåra händelserna från klienten till servern lägger du till följande i programkonfigurationsfilen i klientprojektet.
<diagnostics> <endToEndTracing propagateActivity="true" messageFlowTracing="true"/> </diagnostics>
Lägg till följande
using
direktiv i Program.cs i klienten.using System.Diagnostics;
Main
I -metoden i program.cs-filen i klientprojektet anger du att spårnings-GUID ska spridas i händelseloggen.Guid guid = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = guid;
Uppdatera och granska analysloggen. Leta efter en händelse med händelse-ID 220. Välj händelsen och klicka på fliken Information i förhandsgranskningsfönstret. Den här händelsen innehåller korrelations-ID:t för den anropande aktiviteten.
<Correlation ActivityID="{A066CCF1-8AB3-459B-B62F-F79F957A5036}" />
Kommentar
Alla händelser med samma GUID i ActivityID är relaterade till en begäran. Detta kan användas för att korrelera meddelanden från en specifik klient till en specifik tjänst. Om klienten anropade en annan tjänst kan samma klient identifieras av ActivityID.
I vissa fall kan ActivityID ändras från det ursprungliga GUID:et till ett nytt ActivityID. I så fall genereras en överföringshändelse. Det här händelse-ID:t är 499 och händelsen innehåller följande data i rubriken.
<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>
Kommentar
Överföringshändelsen registrerar ändringen av det aktiva ActivityID från GUID som anges som ActivityID till GUID som anges som RelatedActivityID. När överföringshändelsen har genererats innehåller alla händelser det nya GUID:t som ActivityID.