Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique décrit les traces d’activité dans le modèle de suivi Windows Communication Foundation (WCF). Les activités sont des unités de traitement qui aident l’utilisateur à limiter l’étendue d’une défaillance. Les erreurs qui se produisent dans la même activité sont directement liées. Par exemple, une opération échoue car le déchiffrement de message a échoué. Les traces de l’échec de déchiffrement de l’opération et du message apparaissent dans la même activité, montrant une corrélation directe entre l’erreur de déchiffrement et l’erreur de requête.
Configuration du suivi d’activité
WCF fournit des activités prédéfinies pour le traitement des applications (voir Liste d’activités). Vous pouvez également définir des activités par programmation pour regrouper les traces des utilisateurs. Pour plus d’informations, consultez Émission de suivis dans du code utilisateur.
Pour émettre des traces d’activité au moment de l’exécution, utilisez le ActivityTracing paramètre de la source de System.ServiceModel trace, ou d’autres sources de trace WCF ou personnalisées, comme illustré par le code de configuration suivant.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Pour en savoir plus sur l’élément de configuration et les attributs utilisés, consultez la rubrique Configuration du suivi .
Affichage des activités
Vous pouvez afficher les activités et leur utilité dans l’outil Visionneuse de trace de service (SvcTraceViewer.exe). Lorsque ActivityTracing est activé, cet outil prend les traces et les trie en fonction de l’activité. Reportez-vous également au transfert des suivis. Un transfert de trace indique la façon dont différentes activités sont liées les unes aux autres. Vous pouvez voir qu’une activité particulière a provoqué le démarrage d’une autre activité. Par exemple, une demande de message a démarré une négociation de sécurité pour obtenir un jeton de conversation sécurisée.
Corrélation des activités dans Service Trace Viewer
L'outil de visualisation des traces de service offre deux types de vues des activités :
Affichage liste , où l’ID d’activité est utilisé pour mettre directement en corrélation les traces entre les processus. Les traces de différents processus, par exemple, client et service, mais avec le même ID d’activité sont regroupés dans la même activité. Par conséquent, une erreur se produisant sur le service qui provoque ensuite une erreur sur le client s’affiche dans la même vue d’activité dans l’outil.
Vue graphique , où les activités sont regroupées par processus. Dans cette vue, un client et un service ayant le même ID d’activité ont leurs traces dans différentes activités. Pour mettre en corrélation les activités avec le même ID d’activité dans différents processus, l’outil affiche les flux de messages entre les activités associées.
Pour plus d’informations et pour afficher une vue graphique de l’outil Visionneuse de traces de service, consultez l’outil Visionneuse de trace de service (SvcTraceViewer.exe) et Utilisation de la visionneuse de traces de service pour afficher les traces corrélées et la résolution des problèmes.
Définition de l’étendue d’une activité
Une activité est définie au moment du design et désigne une unité logique de travail. Les traces émises avec le même identificateur d’activité sont directement liées, elles font partie de la même activité. Étant donné qu’une activité peut franchir des limites de point de terminaison (une requête), deux étendues pour une activité sont définies.
Étendue
Global, par application. Dans ce cadre, l’activité est identifiée par son identificateur d’activité global unique de 128 bits, le gAId. Le gAid correspond à ce qui est propagé sur des points de terminaison.Étendue
Local, par point de terminaison. Dans cette étendue, l’activité est identifiée par son id gAId, ainsi que le nom de la source de trace qui émet les traces d’activité et l’ID de processus. Ce triplet constitue l’ID d’activité local, lAId. LAId est utilisé pour définir les limites (locales) d’une activité.
Schéma de trace
Les traces peuvent être émises à l’aide de n’importe quel schéma et sur les plateformes Microsoft. « e2e » (pour « End to End ») est un schéma couramment utilisé. Ce schéma inclut un identificateur 128 bits (gAId), le nom de la source de trace et l’ID de processus. Dans le code managé, XmlWriterTraceListener émet des traces dans le schéma E2E.
Pour définir l’identificateur AID émis avec un suivi, les développeurs peuvent définir la propriété ActivityId en utilisant un Guid pour le stockage local des threads (Thread Local Storage, TLS). l’exemple ci-dessous illustre ce cas de figure.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
La définition du gAId dans TLS est évidente lorsque les traces sont émises à l’aide d’une source de trace, comme illustré dans l’exemple suivant.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
La trace émise contient le gAId actuellement dans TLS, le nom de la source de trace transmis en tant que paramètre au constructeur de la source de trace et l’ID du processus actuel.
Durée de vie de l’activité
En termes stricts, la preuve d’une activité démarre la première fois que l’ID d’activité est utilisé dans une trace émise et termine la dernière fois qu’elle est utilisée dans une trace émise. Un ensemble prédéfini de types de traces est fourni par System.Diagnostics, y compris Start and Stop, pour marquer explicitement les limites de durée de vie de l’activité.
Début : indique le début d’une activité. Une trace « Start » fournit un enregistrement de début d’une nouvelle étape de traitement. Il contient un nouvel ID d’activité pour une source de trace donnée dans un processus donné, sauf lorsque l’ID d’activité est propagé sur les points de terminaison, auquel cas nous voyons un « Démarrer » par point de terminaison. Des exemples de début d’une nouvelle activité incluent la création d’un thread de traitement ou la mise en œuvre d’une nouvelle méthode publique.
Arrêt : indique la fin d’une activité. Une trace « Stop » fournit un enregistrement de fin d’une étape de traitement existante. Il contient un ID d’activité existant pour une source de trace donnée dans un processus donné, sauf lorsque l’ID d’activité est propagé sur les points de terminaison, auquel cas nous voyons un « Arrêter » par point de terminaison. Par exemple, l’arrêt d’une activité inclut la fin d’un thread de traitement ou la sortie d’une méthode dont le début a été indiqué avec une trace « Start ».
Suspendre : indique la suspension du traitement d’une activité. Une trace « Suspension » contient un identifiant d'activité existant dont le traitement est prévu de reprendre ultérieurement. Aucune trace n’est émise avec cet ID entre les événements Suspend et Resume de la source de trace actuelle. Par exemple, la suspension d'une activité lors de l'appel à une fonction de bibliothèque externe ou en attente d'une ressource telle qu'un port de complétion d'E/S.
Reprendre : indique la reprise du traitement d’une activité. Une trace « Reprendre » contient l’ID d’une activité existante dont la dernière trace émise par la source de trace en cours était une trace « Interrompre ». Parmi les actions pouvant provoquer la reprise d'une activité figurent notamment les retours d'appel à une fonction de bibliothèque externe ou les indications de reprise envoyées par une ressource, telle qu'un port de terminaison E/S.
Transfert : étant donné que certaines activités sont causées par d’autres personnes ou qu’elles sont liées à d’autres, elles peuvent être liées à d’autres activités par le biais de traces « Transfert ». Un transfert enregistre la relation dirigée d’une activité vers une autre
Les traces de démarrage et d’arrêt ne sont pas essentielles pour la corrélation. Toutefois, ils peuvent aider à augmenter les performances, le profilage et la validation de l’étendue de l’activité.
À l’aide de ces types, les outils peuvent optimiser la navigation dans les journaux de suivi pour rechercher les événements immédiatement associés de la même activité ou les événements dans les activités associées si l’outil suit les traces de transfert. Par exemple, les outils arrêtent l’analyse des journaux d’activité pour une activité donnée lorsqu’ils détectent une trace de début/fin.
Ces types de trace peuvent également être utilisés pour le profilage. Les ressources consommées entre les marqueurs de début et d’arrêt représentent le temps inclusif de l’activité, y compris les activités logiques contenues. La soustraction des intervalles de temps entre les traces Suspend et Resume fournit le temps d'activité réel.
La trace stop est également particulièrement utile pour valider l’étendue des activités implémentées. Si certaines traces de traitement apparaissent après la trace Stop au lieu d’une activité donnée, cela peut suggérer un défaut de code.
Instructions relatives à l’utilisation du suivi d’activité
Voici une directive sur l’utilisation des traces ActivityTracing (Démarrer, Arrêter, Suspendre, Reprendre et Transférer).
Le traçage est un graphe orienté cyclique, pas une arborescence. Vous pouvez retourner le contrôle à une activité qui a généré une activité.
Une activité désigne une limite de traitement qui peut être significative pour l’administrateur du système ou pour la prise en charge.
Chaque méthode WCF, à la fois sur le client et le serveur, est limitée en commençant une nouvelle activité, puis (une fois le travail terminé), terminant la nouvelle activité et retournant à l’activité ambiante.
Les activités longues (en cours) telles que l’écoute des connexions ou l’attente de messages sont représentées par des marqueurs de démarrage/arrêt correspondants.
Les activités déclenchées par la réception ou le traitement d’un message sont représentées par des limites de trace.
Les activités représentent des activités, pas nécessairement des objets. Une activité doit être interprétée comme « cela était en train de se passer lorsque ». . . (émission de trace significative s’est produite)."