Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. C# 10
  3. Monitoring
Extrait - C# 10 Développez des applications Windows avec Visual Studio 2022
Extraits du livre
C# 10 Développez des applications Windows avec Visual Studio 2022
5 avis
Revenir à la page d'achat du livre

Monitoring

Le traçage

Le traçage d’application permet d’enregistrer des informations sur l’état de l’application sans l’interrompre. Les applications complexes ne peuvent pas forcément être examinées ligne par ligne pour identifier une erreur de logique. Les classes Debug et Trace de l’espace de noms System.Diagnostics exposent des méthodes statiques permettant de tester les conditions d’exécution et d’enregistrer des messages qui seront affichés dans la fenêtre Sortie du débogueur. Ces informations sont également transmises à leur collection d’écouteurs partagée entre les deux classes.

1. Les classes Debug et Trace

Les classes Debug et Trace sont identiques fonctionnellement. La différence principale est que les instructions de la classe Debug ne sont pas incluses par défaut lors de la compilation en mode release contrairement à celles de la classe Trace. La classe Debug sera donc préférée pour le débogage de l’application et la classe Trace sera utilisée pour le suivi et l’optimisation après la finalisation de l’application.

Les méthodes de la classe Debug sont marquées avec l’attribut Conditional précisant la constante DEBUG permettant de spécifier que la constante doit être définie pour compiler l’instruction :

[Conditional("DEBUG")] 

Les méthodes de la classe Trace sont également marquées avec l’attribut Conditional mais la constante est TRACE :

[Conditional("TRACE")] 

Ces constantes sont définies dans les propriétés du projet sous l’onglet Générer. Par défaut, en mode de compilation debug, les deux constantes DEBUG et TRACE sont définies alors que pour le mode de compilation release, seule la constante TRACE est définie par défaut :

Symboles de compilation conditionnelle

Les deux classes exposent une série de méthodes pour écrire dans la collection d’écouteurs :

  • Assert : vérifie une condition. Si elle est fausse, un message est inscrit dans la collection d’écouteurs et dans la fenêtre Sortie ([Ctrl] W, O).

Trace.Assert(false, "Message de la méthode Assert."); 
images/15EI01NEW.png
  • Fail : comme pour la méthode Assert, un message est inscrit...

Les journaux d’événements

Les journaux d’événements représentent le point central des messages permettant de vérifier l’état de santé du système et des applications. Les erreurs d’une application doivent inscrire des messages dans les journaux d’événements dans un but de centralisation et de facilité de suivi du cycle de vie de l’application.

1. L’interaction avec les journaux d’événements

Les journaux d’événements sont accessibles depuis Visual Studio dans l’Explorateur de serveurs ([Ctrl] W, L) :

Explorateur de serveurs dans les journaux d'évènements

Un événement est notamment défini par les propriétés suivantes :

  • Category : une catégorie peut être définie pour faciliter le filtrage des événements. 

  • Date : correspond à la date d’entrée dans le journal d’événements.

  • EntryType : indique le type du message : Information, Warning ou Error. Deux types supplémentaires sont utilisés uniquement dans le journal de sécurité : FailureAudit et SuccessAudit.

  • EventID : l’identifiant de l’événement.

  • Message : le message de l’événement.

  • Source : indique le nom du programme qui a inscrit l’événement.

Dans la section précédente, nous avons vu comment écrire des messages dans un journal d’événements grâce à...

Les compteurs de performance

Surveiller une application pendant son cycle de vie est très important pour apporter des améliorations sur la performance, augmenter la rapidité et optimiser l’espace mémoire utilisé. Les compteurs de performance sont indispensables pour vérifier et contrôler ces points.

Les compteurs de performance sont accessibles à partir du menu Affichage - Explorateur de serveurs ([Ctrl] W, L) :

Les compteurs de performance

L’espace de noms System.Diagnostics fournit des classes permettant d’interagir avec les compteurs de performance. Parmi les plus utilisées :

  • PerformanceCounter : cette classe peut être utilisée à la fois pour surveiller et pour modifier les compteurs.

  • PerformanceCounterCategory : cette classe permet de gérer et parcourir les catégories de compteurs.

Vous pouvez utiliser ces compteurs dans votre application ou en créer de nouveaux spécifiques à une application pour pouvoir les analyser.

1. La création de compteurs de performance

a. Depuis Visual Studio

Les compteurs de performance peuvent être créés directement depuis Visual Studio, dans la fenêtre Explorateur de serveurs ([Ctrl] W, L).

Ouvrez le menu contextuel du nœud Compteurs de performance puis cliquez sur le menu Créer une nouvelle catégorie :

images/15EI08N1.png

La fenêtre Générateur de compteurs de performance s’ouvre. Spécifiez SelfMailer pour le nom de la catégorie et ajoutez une description à la catégorie. Pour pouvoir terminer la création de la catégorie, il faut créer au moins un compteur. Cliquez sur le bouton Nouveau et saisissez SendPerSecond pour le nom du compteur. Sélectionnez RateOfCountsPerSecond32 pour le champ Type et donnez une description à ce compteur.

Générateur de compteurs de performance

Après validation du formulaire, la catégorie et le compteur apparaissent dans la liste des compteurs de performance :

images/15EI10N1.png

b. Depuis le code

La création de compteurs de performance peut également se faire dynamiquement depuis le code. Voici la méthode permettant de créer le même compteur SelfMailer que précédemment depuis l’interface Visual Studio :

public void CreateCounter() 
{ 
    if (PerformanceCounterCategory.Exists("SelfMailer")) 
    { ...