Delen via


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 met hoge prestaties en lage verbositeit door gebruik te maken 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 trackings- 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 Berichtstroomtracering configureren om berichtstroomtracering in te schakelen per 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 beginnershandleiding

  1. Open Logboekviewer door te klikken op Start, Uitvoeren... en eventvwr.exe in te voeren.

  2. Als je analytische tracering niet hebt ingeschakeld, vouw 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 Event Viewer open zodat traceringen zichtbaar zijn.

  3. 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.

  4. Klik met de rechtermuisknop op het serviceproject en selecteer Toevoegen, nieuw item. Selecteer Toepassingsconfiguratiebestand en klik op OK.

  5. 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>
    
  6. 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.

  7. 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>
    
  8. Voeg in de client in Program.cs de volgende using directive toe.

    using System.Diagnostics;
    
  9. Stel in de Main-methode in het program.cs-bestand in het clientproject de tracerings-GUID die moet worden doorgegeven in het gebeurtenislogboek in.

    Guid guid = Guid.NewGuid();
    Trace.CorrelationManager.ActivityId = guid;
    
  10. 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.

  11. In sommige gevallen kan de ActivityID worden gewijzigd van de oorspronkelijke GUID in een nieuwe ActivityID. In dat geval wordt er een overdrachtsgebeurtenis uitgezonden. 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.