Comment utiliser MiniProfiler dans ASP.Net Core

Les performances des applications Web sont une préoccupation majeure dans le monde entier. Les développeurs disposent de nombreux outils qu'ils peuvent utiliser pour profiler les applications Web et trouver les goulots d'étranglement des performances. MiniProfiler est l'un de ces outils - un outil simple mais puissant pour le profilage d'applications Web. MiniProfiler vous aide à détecter les requêtes lentes, les temps de réponse des serveurs lents, etc. 

MiniProfiler est disponible pour .Net, ASP.Net et ASP.Net Core. Vous trouverez la documentation de MiniProfiler sur GitHub. Cet article présente une discussion sur MiniProfiler, pourquoi il est utile et comment nous pouvons l'utiliser pour profiler les applications ASP.Net Core MVC et découvrir les problèmes de performances dans nos applications.

Créer un projet ASP.Net Core MVC dans Visual Studio 2017

Tout d'abord, créons un projet ASP.Net Core MVC dans Visual Studio. Si Visual Studio 2017 est opérationnel dans votre système, suivez les étapes ci-dessous pour créer un projet ASP.Net Core MVC.

  1. Lancez l'IDE de Visual Studio 2017.
  2. Cliquez sur Fichier> Nouveau> Projet.
  3. Sélectionnez «Application Web ASP.Net Core (.Net Core)» dans la liste des modèles affichés.
  4. Spécifiez un nom pour le projet.
  5. Cliquez sur OK pour enregistrer le projet.
  6. Une nouvelle fenêtre, «Nouvelle application Web .Net Core…», s'affiche.
  7. Sélectionnez .Net Core comme runtime et ASP.Net Core 2.1 (ou version ultérieure) dans la liste déroulante en haut. J'utilise .Net Core 2.2.
  8. Sélectionnez «Application Web (Model-View-Controller)» comme modèle de projet (comme illustré dans la figure 1 ci-dessous).
  9. Assurez-vous que les cases à cocher «Activer le support Docker» et «Configurer pour HTTPS» ne sont pas cochées. Nous n'utiliserons pas ces fonctionnalités ici.
  10. Assurez-vous que «Aucune authentification» est sélectionné. Nous n'utiliserons pas non plus l'authentification ici.
  11. Cliquez sur OK. 

Suivre ces étapes créera un nouveau projet ASP.Net Core MVC dans Visual Studio. Nous utiliserons ce projet pour profiler l'application à l'aide de MiniProfiler.

Installer et configurer MiniProfiler dans ASP.Net Core

Pour commencer à travailler avec MiniProfiler, vous devez installer le package NuGet nécessaire. Pour installer MiniProfiler dans votre projet, suivez les étapes ci-dessous.

  1. Sélectionnez le projet dans la fenêtre Explorateur de solutions. 
  2. Cliquez avec le bouton droit de la souris et sélectionnez "Gérer les packages NuGet ..."
  3. Recherchez le package «MiniProfiler.AspNetCore.Mvc». 
  4. Cliquez sur «Installer» pour installer le package NuGet. 

Cela installera le package NuGet MiniProfiler.AspNetCore.Mvc dans votre projet. Pour commencer à utiliser MiniProfiler dans votre projet, vous devrez le configurer dans la classe Startup. L'extrait de code suivant montre comment vous pouvez appeler la méthode AddMiniProfiler sur l'instance IServiceCollection pour ajouter MiniProfiler au pipeline.

public void ConfigureServices (services IServiceCollection)

        {

            services.AddMiniProfiler (options =>

            options.RouteBasePath = "/ profiler"

            );

            // Code usuel

        }

Vous pouvez en savoir plus sur les options que vous pouvez spécifier lors de l'enregistrement de MiniProfiler avec le pipeline à partir du site Web MiniProfiler ici.

Vous devez également appeler la méthode UseMiniProfiler sur l'instance IApplicationBuilder pour commencer à utiliser MiniProfiler dans vos contrôleurs et vues.

public void Configure (application IApplicationBuilder, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Code usuel

    }

Ajoutez ensuite les deux lignes suivantes à l'intérieur de la balise dans le fichier _Layout.cshtml.

@utilisation de StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Vous devez également spécifier où dans la page Web la fenêtre MiniProfiler doit être affichée, c'est-à-dire la position de rendu. Pour ce faire, vous pouvez inclure l'instruction suivante dans la balise.


  

Utilisez les étapes de MiniProfiler pour profiler le code ASP.Net Core MVC

MiniProfiler vous permettra de connaître les temps de chargement de la page et les informations relatives aux performances des requêtes de base de données. Lorsque vous exécutez l'application, la sortie apparaîtra comme dans la figure 2 ci-dessous. Notez la fenêtre MiniProfiler dans le coin supérieur droit de l'écran.

Pour connaître le temps nécessaire à l'exécution d'une partie spécifique de votre code, vous pouvez tirer parti des étapes. L'extrait de code suivant illustre comment cela peut être réalisé.

Index IActionResult public ()

 {

       var miniProfiler = MiniProfiler.Current;

       Liste des auteurs = nouvelle liste ();

       miniProfiler.RenderIncludes (this.HttpContext);

       en utilisant (miniProfiler.Step ("Get Authors"))

       {

           author.Add (new Author () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Address = "Hyderabad, India"});

           author.Add (nouvel auteur () {Id = 2, FirstName = "Stephen", LastName = "Smith", Address = "NY, USA"});

           author.Add (nouvel auteur () {Id = 3, FirstName = "Anand", LastName = "Narayanan", Address = "Chennai, India"});

           author.Add (new Author () {Id = 4, FirstName = "Steve", LastName = "Jones", Address = "London, UK"});

       }

           return View (auteurs);

 }

L'extrait de code suivant montre à quoi ressemble la classe Author susmentionnée.

public class Auteur

    {

        public int Id {get; ensemble; }

        chaîne publique FirstName {get; ensemble; }

        chaîne publique LastName {get; ensemble; }

        chaîne publique Address {get; ensemble; }

    }

Lorsque vous exécutez l'application, vous observerez le temps pris par l'étape que nous avons définie comme illustré dans la figure 3 ci-dessous. L'entrée que j'ai surlignée en vert indique le temps nécessaire pour exécuter l'étape «Obtenir les auteurs».

Si vous souhaitez ignorer une partie spécifique du code de votre application à partir du profilage, vous pouvez spécifier le code à ignorer, comme indiqué dans l'extrait de code ci-dessous.

en utilisant (MiniProfiler.Current.Ignore ())

{

  // Écrivez du code ici que vous n'avez pas

  // veut que MiniProfiler profile

}

Utiliser MiniProfiler pour profiler les requêtes ADO.Net

Vous pouvez également utiliser MiniProfiler pour profiler les requêtes ADO.Net. Pour ce faire, vous devez tirer parti de ProfileDbConnection et ProfileDbCommand comme indiqué dans l'extrait de code ci-dessous.

en utilisant (SqlConnection connection = new SqlConnection (@ "Data Source = JOYDIP \ SQLEXPRESS; Initial Catalog = SyncDB; Trusted_Connection = Yes"))

     {

       en utilisant (ProfiledDbConnection profiledDbConnection = new ProfiledDbConnection (connection, MiniProfiler.Current))

         {

           if (profiledDbConnection.State! = System.Data.ConnectionState.Open)

               profiledDbConnection.Open ();

             en utilisant (SqlCommand command = new SqlCommand

              ("Select * From Authors", connexion))

               {

                 en utilisant (ProfiledDbCommand profiledDbCommand =

                   nouveau ProfiledDbCommand (commande, connexion,

                     MiniProfiler.Current))

                       {                               

                         var data =

                          profiledDbCommand.ExecuteReader ();

              // Écrivez le code ici pour remplir la liste des auteurs

                        }

                 }

          }                      

    }

Notez comment ProfileDbConnection et ProfileDbCommand encapsulent les objets DbConnection et DbCommand. Vous pouvez en savoir plus sur la façon de profiler le code source à l'aide de MiniProfiler sur le site Web de MiniProfiler.

MiniProfiler est un profileur simple pour .Net, Ruby, Go et Node.js. Vous pouvez utiliser MiniProfiler pour profiler les requêtes générées par Dapper, Linq2SQL et Entity Framework. En plus d'être facile à utiliser, MiniProfiler n'ajoute pas beaucoup de frais généraux à vos applications. Vous pouvez utiliser MiniProfiler pour profiler des applications en production sans impact significatif sur les performances.