Freigeben über


Aktivität

In diesem Thema werden Aktivitätsablaufverfolgungen im Wcf-Ablaufverfolgungsmodell (Windows Communication Foundation) beschrieben. Aktivitäten sind Verarbeitungseinheiten, mit denen der Benutzer den Umfang eines Fehlers eingrenzen kann. Fehler, die in derselben Aktivität auftreten, sind direkt miteinander verknüpft. Ein Vorgang schlägt z. B. fehl, weil die Nachrichtenentschlüsselung fehlgeschlagen ist. Die Ablaufverfolgungen für den Vorgangs- und Nachrichtenentschlüsselungsfehler werden in derselben Aktivität angezeigt, wobei die direkte Korrelation zwischen dem Entschlüsselungsfehler und dem Anforderungsfehler angezeigt wird.

Konfigurieren der Aktivitätsablaufverfolgung

WCF stellt vordefinierte Aktivitäten für die Verarbeitung von Anwendungen bereit (siehe Aktivitätsliste). Sie können Aktivitäten auch programmgesteuert definieren, um Benutzerablaufverfolgungen zu gruppieren. Weitere Informationen finden Sie unter Ausgeben von Benutzercode-Ablaufverfolgungen.

Um Aktivitätsablaufverfolgungen zur Laufzeit auszustellen, verwenden Sie die ActivityTracing Einstellung für die System.ServiceModel Ablaufverfolgungsquelle oder andere WCF- oder benutzerdefinierte Ablaufverfolgungsquellen, wie im folgenden Konfigurationscode veranschaulicht.

<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">

Weitere Informationen zum Konfigurationselement und den verwendeten Attributen finden Sie unter dem Thema Konfigurieren der Ablaufverfolgung.

Anzeigen von Aktivitäten

Sie können die Aktivitäten und deren Nutzen im Dienstablaufverfolgungs-Viewer (SvcTraceViewer.exe) anzeigen. Wenn ActivityTracing aktiviert ist, übernimmt dieses Tool die Ablaufverfolgungen und sortiert sie basierend auf der Aktivität. Sie können auch Übertragungen nachvollziehen. Eine Ablaufverfolgungsübertragung gibt an, wie verschiedene Aktivitäten zusammenhängen. Sie können sehen, dass eine bestimmte Aktivität einen weiteren Start verursacht hat. Beispielsweise hat eine Nachrichtenanforderung einen Sicherheitshandshake gestartet, um ein sicheres Konversationstoken abzurufen.

Korrelation von Aktivitäten in Service Trace Viewer

Das Tool "Dienstablaufverfolgungs-Viewer" bietet zwei Ansichten von Aktivitäten:

  • Listenansicht, in der Ablaufverfolgungen prozessübergreifend anhand der Aktivitäts-ID direkt korreliert werden. Spuren aus verschiedenen Prozessen, z. B. Client und Service, aber mit derselben Aktivitäts-ID, werden in derselben Aktivität gruppiert. Daher wird ein Fehler, der auf dem Dienst auftritt, der dann einen Fehler auf dem Client verursacht, beide in derselben Aktivitätsansicht im Tool angezeigt.

  • Diagrammansicht , in der Aktivitäten nach Prozessen gruppiert werden. In dieser Ansicht verwalten ein Client und ein Dienst mit der gleichen Aktivitäts-ID ihre Ablaufverfolgungen in unterschiedlichen Aktivitäten. Um Aktivitäten mit derselben Aktivitäts-ID in verschiedenen Prozessen zu korrelieren, zeigt das Tool Nachrichtenflüsse über die zugehörigen Aktivitäten hinweg an.

Weitere Informationen und eine grafische Ansicht des Dienstablaufverfolgungs-Viewer-Tools finden Sie unter Service Trace Viewer Tool (SvcTraceViewer.exe) und Verwenden der Dienstablaufverfolgungsanzeige zum Anzeigen korrelierter Ablaufverfolgungen und Problembehandlung.

Definieren des Gültigkeitsbereichs einer Aktivität

Eine Aktivität wird zur Entwurfszeit definiert und kennzeichnet eine logische Arbeitseinheit. Ausgegebene Spuren mit demselben Aktivitätsbezeichner sind direkt miteinander verknüpft, sie gehören zur selben Aktivität. Da eine Aktivität Endpunktgrenzen (eine Anforderung) überschreiten kann, werden zwei Bereiche für eine Aktivität definiert.

  • Bereich (Global), pro Anwendung. In diesem Bereich wird die Aktivität durch den global eindeutigen 128-Bit-Aktivitätsbezeichner, die gAId, identifiziert. Die gAId wird über Endpunkte hinaus weitergegeben.

  • Bereich (Local), pro Endpunkt. In diesem Bereich wird die Aktivität nach ihrer gAId identifiziert sowie nach dem Namen der Ablaufverfolgungsquelle, die die Aktivitätsablaufverfolgungen ausgibt, und nach der Prozess-ID. Diese Dreiergruppe bildet die lokale Aktivitäts-ID, die lAId. Die lAId wird verwendet, um die (lokalen) Grenzen einer Aktivität zu definieren.

Ablaufverfolgungsschema

Ablaufverfolgungen können mit einem beliebigen Schema und über verschiedene Microsoft-Plattformen hinweg ausgegeben werden. "e2e" (für "Ende bis Ende") ist ein häufig verwendetes Schema. Dieses Schema umfasst einen 128-Bit-Bezeichner (gAId), den Namen der Ablaufverfolgungsquelle und die Prozess-ID. In verwaltetem Code gibt XmlWriterTraceListener Ablaufverfolgungen im E2E-Schema aus.

Entwickler können die mit einer Ablaufverfolgung ausgegebene AID festlegen, indem sie die ActivityId-Eigenschaft mit einer GUID zum threadlokalen Speicher (Thread Local Storage, TLS) festlegen. Dies wird im folgenden Beispiel veranschaulicht:

// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();

Das Festlegen der gAId im TLS wird deutlich, wenn Ablaufverfolgungen unter Verwendung einer Ablaufverfolgungsquelle ausgegeben werden, wie im folgenden Beispiel veranschaulicht wird.

TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");

Die ausgegebene Ablaufverfolgung enthält die gAId, die sich aktuell im TLS befindet, den als Parameter an den Konstruktor der Ablaufverfolgungsquelle übergebenen Namen der Ablaufverfolgungsquelle und die ID des aktuellen Prozesses.

Lebensdauer einer Aktivität

In strengsten Worten beginnt der Nachweis einer Aktivität, wenn die Aktivitäts-ID zum ersten Mal in einer ausgegebenen Ablaufverfolgung verwendet wird, und endet das letzte Mal, wenn sie in einer ausgegebenen Ablaufverfolgung verwendet wird. System.Diagnostics stellt eine vordefinierte Reihe von Ablaufverfolgungstypen bereit, einschließlich Start und Stop, mit denen die Lebensdauer einer Aktivität ausdrücklich angegeben werden kann.

  • Start: Gibt den Anfang einer Aktivität an. Eine Start-Ablaufverfolgung stellt einen Datensatz zu Beginn eines neuen Verarbeitungsmeilensteins bereit. Er enthält eine neue Aktivitäts-ID für eine bestimmte Ablaufverfolgungsquelle in einem bestimmten Prozess. Davon ausgenommen sind Weitergaben der Aktivitäts-ID über Endpunkte hinaus. In diesen Fällen wird ein "Start" pro Endpunkt angegeben. Beispiele für das Starten einer neuen Aktivität sind das Erstellen eines neuen Threads für die Verarbeitung oder das Eingeben einer neuen öffentlichen Methode.

  • Stop: Gibt das Ende einer Aktivität an. Eine Stop-Ablaufverfolgung stellt einen Datensatz am Ende eines vorhandenen Verarbeitungsmeilensteins bereit. Sie enthält eine vorhandene Aktivitäts-ID für eine bestimmte Ablaufverfolgungsquelle in einem bestimmten Prozess, sofern die Aktivitäts-ID nicht über Endpunkte hinaus weitergegeben wird. In diesem Fall wird ein "Stop" pro Endpunkt angegeben. Beispiele für das Beenden einer Aktivität sind das Beenden eines Verarbeitungsthreads oder das Beenden einer Methode, deren Anfang mit einer "Start"-Ablaufverfolgung gekennzeichnet wurde.

  • Anhalten: Gibt die Aussetzung der Verarbeitung einer Aktivität an. Eine Suspend-Ablaufverfolgung enthält eine vorhandene Aktivitäts-ID, deren Verarbeitung voraussichtlich zu einem späteren Zeitpunkt fortgesetzt wird. Mit dieser ID werden keine Ablaufverfolgungen zwischen den Ereignissen Suspend und Resume von der aktuellen Ablaufverfolgungsquelle ausgegeben. Beispiele sind das Anhalten einer Aktivität beim Aufrufen einer externen Bibliotheksfunktion oder beim Warten auf eine Ressource wie einen E/A-Vervollständigungsport.

  • Fortsetzung: Gibt die Wiederaufnahme der Verarbeitung einer Aktivität an. Eine Resume-Ablaufverfolgung enthält eine vorhandene Aktivitäts-ID, deren zuletzt von der aktuellen Ablaufverfolgungsquelle ausgegebene Ablaufverfolgung eine Suspend-Ablaufverfolgung war. Zu den Beispielen hierfür gehören die Rückgabe eines Aufrufs einer externen Bibliotheksfunktion oder das Signal einer Ressource, beispielsweise eines E/A-Abschlussanschlusses, zum Fortsetzen der Verarbeitung.

  • Übertragung: Da einige Aktivitäten von anderen verursacht werden oder sich auf andere beziehen, können Aktivitäten über "Transfer"-Ablaufverfolgungen mit anderen Aktivitäten zusammenhängen. Eine Übertragung zeichnet die gerichtete Beziehung einer Aktivität in eine andere auf.

Start- und Stop-Traces sind nicht entscheidend für die Korrelation. Sie können jedoch dazu beitragen, die Leistungs-, Profilerstellungs- und Aktivitätsbereichsüberprüfung zu erhöhen.

Mithilfe dieser Typen können die Tools die Navigation in den Ablaufverfolgungsprotokollen optimieren, um die unmittelbar verwandten Ereignisse derselben Aktivität oder Ereignisse in verwandten Aktivitäten zu finden, wenn das Tool Transferprotokollen folgt. Beispielsweise beenden die Tools die Analyse der Protokolle für eine bestimmte Aktivität, wenn sie eine Start-/Stopp-Ablaufverfolgung sehen.

Diese Ablaufverfolgungstypen können auch zur Profilerstellung verwendet werden. Ressourcen, die zwischen den Start- und Stoppmarkern verbraucht werden, stellen die inklusive Zeit der Aktivität dar, einschließlich logischer Aktivitäten. Die Differenz der Zeitintervalle zwischen Suspend- und Resume-Ablaufverfolgungen ergibt die tatsächliche Aktivitätsdauer.

Auch die Stop-Ablaufverfolgung ist besonders hilfreich bei der Validierung des Bereichs der implementierten Aktivitäten. Wenn einige Verarbeitungsablaufverfolgungen nach der Stop-Ablaufverfolgung statt innerhalb einer bestimmten Aktivität auftreten, kann das auf einen Codefehler hinweisen.

Richtlinien für die Verwendung der Aktivitätsablaufverfolgung

Die folgenden Hinweise beziehen sich auf die Verwendung von ActivityTracing-Ablaufverfolgungen (Start, Stop, Suspend, Resume und Transfer).

  • Tracing ist ein gerichteter zyklischer Graph, kein Baum. Sie können die Steuerung zu einer Aktivität zurückgeben, die eine Aktivität ausgelöst hat.

  • Eine Aktivität zeigt eine Verarbeitungsgrenze an, die für den Administrator des Systems oder für die Unterstützung sinnvoll sein kann.

  • Jede WCF-Methode, sowohl auf dem Client als auch auf dem Server, ist an den Beginn einer neuen Aktivität gebunden, dann (nachdem die Arbeit abgeschlossen wurde), die neue Aktivität zu beenden und zur Umgebungsaktivität zurückzukehren.

  • Lang andauernde (laufende) Aktivitäten wie das Überwachen von Verbindungen oder das Warten auf Nachrichten werden durch entsprechende Start-/Stopp-Markierungen dargestellt.

  • Aktivitäten, die durch den Empfang oder die Verarbeitung einer Nachricht ausgelöst werden, werden durch Tracing-Grenzen dargestellt.

  • Aktivitäten stellen Aktivitäten dar, nicht unbedingt Objekte. Eine Aktivität sollte als „das geschah, als ... . . (sinnvolle Spurenemissionen sind aufgetreten)."

Siehe auch