Activiteit
In dit onderwerp worden activiteitstraceringstraceringen in het WCF-traceringsmodel (Windows Communication Foundation) beschreven. Activiteiten zijn verwerkingseenheden waarmee de gebruiker het bereik van een fout kan beperken. Fouten die zich in dezelfde activiteit voordoen, zijn rechtstreeks gerelateerd. Een bewerking mislukt bijvoorbeeld omdat berichtontsleuteling is mislukt. De traceringen voor zowel de bewerking als de fout bij het ontsleutelen van berichten worden weergegeven in dezelfde activiteit, met directe correlatie tussen de ontsleutelingsfout en de aanvraagfout.
Activiteitstracering configureren
WCF biedt vooraf gedefinieerde activiteiten voor het verwerken van toepassingen (zie activiteitenlijst). U kunt activiteiten ook programmatisch definiëren om gebruikerstraceringen te groeperen. Zie Traceringen van gebruikerscode verzenden voor meer informatie.
Als u activiteitstraceringen tijdens runtime wilt verzenden, gebruikt u de ActivityTracing
instelling voor de System.ServiceModel
traceringsbron of andere WCF- of aangepaste traceringsbronnen, zoals wordt gedemonstreerd door de volgende configuratiecode.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Zie het onderwerp Tracering configureren voor meer informatie over het configuratie-element en de gebruikte kenmerken.
Activiteiten weergeven
U kunt de activiteiten en het bijbehorende hulpprogramma bekijken in het hulpprogramma Service Trace Viewer (SvcTraceViewer.exe). Wanneer ActivityTracing is ingeschakeld, worden met dit hulpprogramma de traceringen gebruikt en gesorteerd op basis van activiteit. U kunt ook traceringsoverdrachten zien. Een traceringsoverdracht geeft aan hoe verschillende activiteiten aan elkaar zijn gerelateerd. U kunt zien dat een bepaalde activiteit ertoe heeft geleid dat een andere activiteit werd gestart. Een berichtaanvraag heeft bijvoorbeeld een beveiligingshanddruk gestart om een beveiligd gesprekstoken op te halen.
Activiteiten correleren in Service Trace Viewer
Het hulpprogramma Service Trace Viewer biedt twee weergaven van activiteiten:
Lijstweergave , waarbij de activiteits-id wordt gebruikt om traceringen rechtstreeks te correleren tussen processen. Traceringen van verschillende processen, bijvoorbeeld client en service, maar met dezelfde activiteits-id worden gegroepeerd in dezelfde activiteit. Daarom wordt er een fout opgetreden in de service die vervolgens een fout op de client veroorzaakt, beide weergegeven in dezelfde activiteitsweergave in het hulpprogramma.
Grafiekweergave , waarbij activiteiten worden gegroepeerd op processen. In deze weergave hebben clients en services met dezelfde activiteits-id hun traceringen in verschillende activiteiten. Als u activiteiten wilt correleren met dezelfde activiteits-id in verschillende processen, toont het hulpprogramma berichtstromen over de gerelateerde activiteiten.
Zie het hulpprogramma Service Trace Viewer (SvcTraceViewer.exe) en Het gebruik van Service Trace Viewer voor het weergeven van gecorreleerde traceringen en probleemoplossing voor meer informatie en het weergeven van een grafische weergave van het hulpprogramma Service Trace Viewer.
Het bereik van een activiteit definiëren
Een activiteit wordt gedefinieerd tijdens het ontwerp en geeft een logische werkeenheid aan. Verzonden traceringen met dezelfde activiteits-id zijn rechtstreeks gerelateerd, ze maken deel uit van dezelfde activiteit. Omdat een activiteit eindpuntgrenzen (een aanvraag) kan overschrijden, worden twee bereiken voor een activiteit gedefinieerd.
Global
bereik, per toepassing. In dit bereik wordt de activiteit geïdentificeerd met de 128-bits globally unique activity identifier, de gAId. De gAid is wat wordt doorgegeven aan eindpunten.Local
bereik, per eindpunt. In dit bereik wordt de activiteit geïdentificeerd door de gAId, samen met de traceringsbronnaam die de activiteitstraceringen en de proces-id verzendt. Deze triplet vormt de id van de lokale activiteit, lAId. De lAId wordt gebruikt om de (lokale) grenzen van een activiteit te definiëren.
Traceringsschema
Traceringen kunnen worden verzonden met elk schema en op verschillende Microsoft-platforms. "e2e" (voor End-to-End) is een veelgebruikt schema. Dit schema bevat een 128-bits id (gAId), de bronnaam van de tracering en de proces-id. In beheerde code XmlWriterTraceListener worden traceringen verzonden in het E2E-schema.
Ontwikkelaars kunnen de AID instellen die wordt verzonden met een trace door de ActivityId eigenschap in te stellen met een GUID in Tls (Thread Local Storage). In het volgende voorbeeld ziet u dit.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
Het instellen van de gAId in TLS is duidelijk wanneer traceringen worden verzonden met behulp van een traceringsbron, zoals wordt weergegeven in het volgende voorbeeld.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
De verzonden tracering bevat de gAId die zich momenteel in TLS bevindt, de traceringsbronnaam die als parameter is doorgegeven aan de constructor van de traceringsbron en de id van het huidige proces.
Levensduur van activiteit
In strikte termen begint het bewijs van een activiteit de eerste keer dat de activiteits-id wordt gebruikt in een verzonden trace en eindigt de laatste keer dat deze wordt gebruikt in een verzonden trace. Een vooraf gedefinieerde set traceringstypen wordt geleverd door System.Diagnostics, waaronder Starten en Stoppen, om expliciet de grenzen van de levensduur van de activiteit te markeren.
Start: Geeft het begin van een activiteit aan. Een tracering 'Starten' biedt een record voor het starten van een nieuwe verwerkingsmijlpal. Het bevat een nieuwe activiteits-id voor een bepaalde traceringsbron in een bepaald proces, behalve wanneer de activiteits-id wordt doorgegeven tussen eindpunten. In dat geval zien we één begindatum per eindpunt. Voorbeelden van het starten van een nieuwe activiteit zijn het maken van een nieuwe thread voor verwerking of het invoeren van een nieuwe openbare methode.
Stop: Geeft het einde van een activiteit aan. Een stoptracering biedt een record voor het beëindigen van een bestaande verwerkingsmijlpal. Het bevat een bestaande activiteits-id voor een bepaalde traceringsbron in een bepaald proces, behalve wanneer de activiteits-id wordt doorgegeven tussen eindpunten. In dat geval zien we één stop per eindpunt. Voorbeelden van het stoppen van een activiteit zijn het beëindigen van een verwerkingsthread of het afsluiten van een methode waarvan het begin is aangeduid met een 'Start'-trace.
Onderbreken: Geeft aan dat de verwerking van een activiteit wordt opgeschort. Een tracering 'Onderbreken' bevat een bestaande activiteits-id waarvan de verwerking naar verwachting op een later tijdstip wordt hervat. Er worden geen traceringen verzonden met deze id tussen de gebeurtenissen Onderbreken en Hervatten van de huidige traceringsbron. Voorbeelden hiervan zijn het onderbreken van een activiteit bij het aanroepen van een externe bibliotheekfunctie of bij het wachten op een resource, zoals een I/O-voltooiingspoort.
Cv: Geeft de hervatting van de verwerking van een activiteit aan. Een tracering hervatten bevat een bestaande activiteits-id waarvan de laatste verzonden tracering van de huidige traceringsbron een tracering 'Onderbreken' was. Voorbeelden hiervan zijn het retourneren van een aanroep naar een externe bibliotheekfunctie of wanneer wordt signalen ontvangen dat de verwerking wordt hervat door een resource, zoals een I/O-voltooiingspoort.
Overdracht: Omdat sommige activiteiten worden veroorzaakt door anderen of betrekking hebben op anderen, kunnen activiteiten worden gerelateerd aan andere activiteiten via 'Overdracht'-traceringen. Een overdracht registreert de gerichte relatie van de ene activiteit naar een andere
Traceringen voor starten en stoppen zijn niet essentieel voor correlatie. Ze kunnen echter helpen bij het verhogen van de prestaties, profilering en validatie van het activiteitenbereik.
Met behulp van deze typen kunnen de hulpprogramma's het navigeren in de traceringslogboeken optimaliseren om de direct gerelateerde gebeurtenissen van dezelfde activiteit te vinden, of gebeurtenissen in gerelateerde activiteiten als het hulpprogramma overdrachtstraceringen volgt. De hulpprogramma's stoppen bijvoorbeeld met het parseren van de logboeken voor een bepaalde activiteit wanneer ze een tracering starten/stoppen zien.
Deze traceringstypen kunnen ook worden gebruikt voor profilering. Resources die tussen de begin- en eindmarkeringen worden gebruikt, vertegenwoordigen de inclusieve tijd van de activiteit, inclusief logische activiteiten. Als u de tijdsintervallen tussen de traceringen Onderbreken en Hervatten aftrekken, wordt de werkelijke activiteitstijd geboden.
De stoptracering is ook bijzonder nuttig voor het valideren van het bereik van de geïmplementeerde activiteiten. Als sommige verwerkingstraceringen na de stoptracering worden weergegeven in plaats van binnen een bepaalde activiteit, kan dit codefout suggereren.
Richtlijnen voor het gebruik van activiteitentracering
Hier volgt een richtlijn voor het gebruik van ActivityTracing-traceringen (Starten, Stoppen, Onderbreken, Hervatten en Overdragen).
Tracering is een gerichte cyclische grafiek, geen boom. U kunt het besturingselement terugsturen naar een activiteit die een activiteit heeft voortgebracht.
Een activiteit geeft een verwerkingsgrens aan die zinvol kan zijn voor de beheerder van het systeem of voor ondersteuning.
Elke WCF-methode, zowel op de client als op de server, wordt gebonden door een nieuwe activiteit te beginnen en vervolgens (nadat het werk is voltooid) de nieuwe activiteit te beëindigen en terug te keren naar de omgevingsactiviteit.
Langlopende (lopende) activiteiten, zoals luisteren naar verbindingen of wachten op berichten, worden vertegenwoordigd door bijbehorende begin-/stopmarkeringen.
Activiteiten die worden geactiveerd door het ontvangstbewijs of de verwerking van een bericht, worden vertegenwoordigd door traceringsgrenzen.
Activiteiten vertegenwoordigen activiteiten, niet noodzakelijkerwijs objecten. Een activiteit moet worden geïnterpreteerd als 'dit gebeurde toen . . . (zinvolle traceringsemissie is opgetreden)."