2 votes

Comment versionner une catégorie de compteur de performance ?

J'ai une catégorie de compteur de performance. Les compteurs de cette catégorie peuvent changer lors de la prochaine version, donc lorsque le programme démarre, je veux vérifier si la catégorie existe et s'il s'agit de la bonne version - sinon, créer la nouvelle catégorie. Je peux le faire en stockant un GUID dans la chaîne d'aide mais cela est évidemment malodorant. Est-il possible de faire cela plus proprement avec l'API .NET ?

La version existante qui sent mauvais...

if (PerformanceCounterCategory.Exists(CATEGORY_NAME))
{
    PerformanceCounterCategory c = new PerformanceCounterCategory(CATEGORY_NAME);
    if (c.CategoryHelp != CATEGORY_VERSION)
    {
        PerformanceCounterCategory.Delete(CATEGORY_NAME);
    }
}

if (!PerformanceCounterCategory.Exists(CATEGORY_NAME))
{
      // Create category
}

3voto

Evert Points 363

Dans notre système, chaque fois que l'application démarre, nous vérifions la catégorie existante. Si elle n'est pas trouvée, nous créons la catégorie. Si elle existe, nous comparons la catégorie existante à ce que nous attendons et la recréons (suppression, création) s'il y a des valeurs manquantes.

var missing = counters
.Where(counter => !PerformanceCounterCategory.CounterExists(counter.Name, CategoryName))
.Count();

if (missing > 0)
{
    PerformanceCounterCategory.Delete(CategoryName);

    PerformanceCounterCategory.Create(
        CategoryName,
        CategoryHelp,
        PerformanceCounterCategoryType.MultiInstance,
        new CounterCreationDataCollection(counters.Select(x => (CounterCreationData)x).ToArray()));
}

0voto

Bryan Points 1839

Je ne pense pas qu'il y ait une meilleure façon de faire. IMHO, je ne pense pas que ce soit une solution terrible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X