Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Les suivis des participants sont des points d’extensibilité qui permettent à un développeur de workflow d’accéder aux TrackingRecord objets et de les traiter. .NET Framework 4.6.1 inclut un participant de suivi standard qui écrit des enregistrements de suivi en tant qu'événements de Traçage d'Événements pour Windows (ETW). Si cela ne répond pas à vos besoins, vous pouvez également écrire un participant de suivi personnalisé.
Suivi des participants
L’infrastructure de suivi permet l’application d’un filtre sur les enregistrements de suivi sortants afin qu’un participant puisse s’abonner à un sous-ensemble des enregistrements. Le mécanisme d’application d’un filtre est via un profil de suivi.
Windows Workflow Foundation (WF) dans .NET Framework 4.6.1 fournit un participant de suivi qui écrit les enregistrements de suivi dans une session ETW. Le participant est configuré sur un service de flux de travail en ajoutant un comportement spécifique au suivi dans un fichier de configuration. L’activation d’un participant de suivi ETW permet d’afficher les enregistrements de suivi dans l’observateur d’événements. L'exemple du Kit de développement logiciel pour le suivi ETW constitue un bon moyen de se familiariser avec le suivi WF à l'aide du participant de suivi ETW.
Participant de suivi ETW
.NET Framework 4.6.1 inclut un participant de suivi ETW qui écrit les enregistrements de suivi dans une session ETW. Cela s’effectue de manière très efficace avec un impact minimal sur les performances de l’application ou sur le débit du serveur. L’un des avantages de l’utilisation du participant de suivi ETW standard est que les enregistrements de suivi qu’il reçoit peuvent être consultés avec les autres journaux d’activité de l’application et du système dans l’Observateur d’événements Windows.
Le participant de suivi ETW standard est configuré dans le fichier Web.config, comme illustré dans l’exemple suivant.
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="Sample Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
<tracking>
<profiles>
<trackingProfile name="Sample Tracking Profile">
….
</trackingProfile>
</profiles>
</tracking>
</system.serviceModel>
</configuration>
Remarque
Si un trackingProfile nom n’est pas spécifié, tel que juste <etwTracking/> ou <etwTracking profileName=""/>, le profil de suivi par défaut installé avec .NET Framework 4.6.1 dans le fichier Machine.config est utilisé.
Dans le fichier Machine.config, le modèle de suivi par défaut s'abonne aux enregistrements et aux erreurs de l'instance de workflow.
Dans ETW, les événements sont écrits dans la session ETW par le biais d’un ID de fournisseur. L’ID de fournisseur que le participant de suivi ETW utilise pour écrire les enregistrements de suivi dans ETW est défini dans la section diagnostics du fichier Web.config (sous <system.serviceModel><diagnostics>). Par défaut, le participant de suivi ETW utilise un ID de fournisseur par défaut lorsqu’il n’a pas été spécifié, comme illustré dans l’exemple suivant.
<system.serviceModel>
<diagnostics etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" />
L'illustration suivante montre le flux des données de suivi via le participant de suivi ETW. Une fois que les données de suivi atteignent la session ETW, elles sont accessibles de plusieurs façons. L’une des méthodes les plus utiles pour accéder à ces événements consiste à utiliser l’Observateur d’événements, un outil Windows courant utilisé pour afficher les journaux et les traces à partir d’applications et de services.
![]()
Données d'événement des participants de suivi
Un participant de suivi sérialise les données d’événement suivies dans une session ETW au format d’un événement par enregistrement de suivi. Un événement est identifié à l’aide d’un ID compris entre 100 et 199. Pour connaître les définitions des enregistrements d’événements de suivi émis par un participant de suivi, consultez la rubrique Référence sur les événements de suivi .
La taille d’un événement ETW est limitée par la taille de la mémoire tampon ETW ou par la charge utile maximale d’un événement ETW, selon la valeur la plus petite. Si la taille de l’événement dépasse l’une de ces limites ETW, l’événement est tronqué et son contenu est supprimé de manière arbitraire. Les variables, les arguments, les annotations et les données personnalisées ne sont pas supprimés de manière sélective. En cas de troncation, toutes ces valeurs sont tronquées indépendamment de celle qui a entraîné le dépassement de la taille de l'événement par rapport à la limite ETW. Les données supprimées sont remplacées par <item>..<item>.
Les types complexes dans les variables, les arguments et les éléments de données personnalisés sont sérialisés dans l’enregistrement d’événements ETW à l’aide de la NetDataContractSerializer classe. Cette classe inclut des informations de type CLR dans le flux XML sérialisé.
La troncation des données de charge utile en raison de limites ETW peut provoquer l'envoi d'enregistrements de suivi en double à une session ETW. Cela peut se produire si plusieurs sessions écoutent les événements et que les sessions ont des limites de charge utile différentes pour les événements.
Pour la session avec la limite inférieure, il est possible que l'événement soit tronqué. Le participant de suivi ETW ne connaît pas le nombre de sessions qui écoutent les événements ; si un événement est tronqué pour une session, le participant ETW essaie à nouveau d'envoyer l'événement. Dans ce cas, la session qui est configurée pour accepter une charge utile plus grande recevra l’événement deux fois, à la fois dans sa version non tronquée et tronquée. La duplication peut être évitée en configurant toutes les sessions ETW avec les mêmes limites de taille de mémoire tampon.
Accès aux données de suivi d'un participant ETW dans l'observateur d'événements
Les événements écrits dans une session ETW par le participant de suivi ETW sont accessibles via l’Observateur d’événements (lors de l’utilisation de l’ID de fournisseur par défaut). Cela permet d’afficher rapidement les enregistrements de suivi qui ont été émis par le flux de travail.
Remarque
Les événements d'enregistrement de suivi émis vers une session ETW utilisent des ID d'événement compris entre 100 et 199.
Pour activer l’affichage des enregistrements de suivi dans l’Observateur d’événements
Démarrer l’Observateur d’événements (EVENTVWR.EXE)
Sélectionnez Observateur d’événements, Applications et journaux des services, Microsoft, Windows, Application Server-Applications.
Cliquez avec le bouton droit de la souris et assurez-vous que l'option Afficher, Afficher les journaux analytiques et de débogage est sélectionnée. Si tel n'est pas le cas, activez cette case à cocher de façon à ce que la coche apparaisse en regard de celle-ci. Les journaux analytiques, Perf et de débogage s'affichent.
Cliquez avec le bouton droit sur le journal analytique , puis sélectionnez Activer le journal. Le journal existe dans le fichier %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-Application Server-Applications%4Analytic.etl.
Participant de suivi personnalisé
L’API participant de suivi permet l’extension du runtime de suivi avec un participant de suivi fourni par l’utilisateur qui peut inclure une logique personnalisée pour gérer les enregistrements de suivi émis par le runtime de flux de travail. Pour écrire un participant de suivi personnalisé, le développeur doit implémenter la Track méthode sur la TrackingParticipant classe. Cette méthode est appelée lorsqu’un enregistrement de suivi est émis par le runtime de workflow.
Le suivi des participants dérive de la TrackingParticipant classe. Le EtwTrackingParticipant fourni par le système émet un événement de suivi des événements pour Windows pour chaque enregistrement de suivi reçu. Pour créer un participant de suivi personnalisé, une classe est créée qui dérive de TrackingParticipant. Pour fournir des fonctionnalités de suivi de base, substituez Track. Track est appelé lorsqu’un enregistrement de suivi est envoyé par le runtime et peut être traité de la manière souhaitée. Dans l’exemple suivant, une classe de participant de suivi personnalisée est définie qui émet tous les enregistrements de suivi dans la fenêtre de console. Vous pouvez également implémenter un TrackingParticipant objet qui traite les enregistrements de suivi de manière asynchrone à l’aide de ses méthodes BeginTrack et EndTrack.
class ConsoleTrackingParticipant : TrackingParticipant
{
protected override void Track(TrackingRecord record, TimeSpan timeout)
{
if (record != null)
{
Console.WriteLine("=================================");
Console.WriteLine(record);
}
}
}
Pour utiliser un participant de suivi particulier, inscrivez-le auprès de l’instance de flux de travail que vous souhaitez suivre, comme illustré dans l’exemple suivant.
myInstance.Extensions.Add(new ConsoleTrackingParticipant());
Dans l’exemple suivant, un flux de travail constitué d’une Sequence activité qui contient une WriteLine activité est créée. ConsoleTrackingParticipant est ajouté aux extensions et le workflow est appelé.
Activity activity= new Sequence()
{
Activities =
{
new WriteLine()
{
Text = "Hello World."
}
}
};
WorkflowApplication instance = new WorkflowApplication(activity);
instance.Extensions.Add(new ConsoleTrackingParticipant());
instance.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
Console.WriteLine("workflow instance completed, Id = " + instance.Id);
resetEvent.Set();
};
instance.Run();
Console.ReadLine();