Hur man använder MiniProfiler i ASP.Net Core

Webbapplikationers prestanda är ett allvarligt bekymmer över hela världen. Utvecklare har många verktyg som de kan använda för att profilera webbapplikationer och hitta prestanda flaskhalsar. MiniProfiler är ett sådant verktyg - ett enkelt men ändå kraftfullt verktyg för profilering av webbapplikationer. MiniProfiler hjälper dig att upptäcka långsamma frågor, långa serversvarstider och mer. 

MiniProfiler är tillgänglig för .Net, ASP.Net och ASP.Net Core. Du hittar dokumentationen för MiniProfiler på GitHub. Den här artikeln presenterar en diskussion om MiniProfiler, varför den är användbar och hur vi kan använda den för att profilera ASP.Net Core MVC-applikationer och upptäcka prestandafrågor i våra applikationer.

Skapa ett ASP.Net Core MVC-projekt i Visual Studio 2017

Låt oss först skapa ett ASP.Net Core MVC-projekt i Visual Studio. Om Visual Studio 2017 är igång i ditt system, följ stegen nedan för att skapa ett ASP.Net Core MVC-projekt.

  1. Starta Visual Studio 2017 IDE.
  2. Klicka på Arkiv> Nytt> Projekt.
  3. Välj “ASP.Net Core Web Application (.Net Core)” från listan över mallar som visas.
  4. Ange ett namn för projektet.
  5. Klicka på OK för att spara projektet.
  6. Ett nytt fönster, "New .Net Core Web Application ...", kommer att visas.
  7. Välj .Net Core som körtid och ASP.Net Core 2.1 (eller senare) från rullgardinsmenyn högst upp. Jag använder .Net Core 2.2.
  8. Välj “Web Application (Model-View-Controller)” som projektmall (som visas i figur 1 nedan).
  9. Se till att kryssrutorna "Aktivera Docker-support" och "Konfigurera för HTTPS" är avmarkerade. Vi kommer inte att använda dessa funktioner här.
  10. Se till att "Ingen autentisering" är valt. Vi använder inte heller autentisering här.
  11. Klicka på OK. 

Genom att följa dessa steg skapas ett nytt ASP.Net Core MVC-projekt i Visual Studio. Vi använder detta projekt för att profilera applikationen med MiniProfiler.

Installera och konfigurera MiniProfiler i ASP.Net Core

För att komma igång med MiniProfiler måste du installera det nödvändiga NuGet-paketet. För att installera MiniProfiler i ditt projekt, följ stegen nedan.

  1. Välj projektet i Solution Explorer-fönstret. 
  2. Högerklicka och välj “Hantera NuGet-paket ...”
  3. Sök efter paketet “MiniProfiler.AspNetCore.Mvc”. 
  4. Klicka på “Installera” för att installera NuGet-paketet. 

Detta installerar MiniProfiler.AspNetCore.Mvc NuGet-paketet i ditt projekt. För att börja använda MiniProfiler i ditt projekt måste du konfigurera det i startklassen. Följande kodavsnitt visar hur du kan ringa AddMiniProfiler-metoden i IServiceCollection-instansen för att lägga till MiniProfiler till pipelinen.

public void ConfigureServices (IServiceCollection services)

        {

            services.AddMiniProfiler (alternativ =>

            options.RouteBasePath = "/ profiler"

            );

            // Vanlig kod

        }

Du kan lära dig mer om de alternativ du kan ange när du registrerar MiniProfiler med pipelinen från MiniProfiler-webbplatsen här.

Du bör också åberopa metoden UseMiniProfiler i IApplicationBuilder-instansen för att börja använda MiniProfiler i dina styrenheter och vyer.

public void Configure (IApplicationBuilder app, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Vanlig kod

    }

Lägg sedan till följande två rader inuti taggen i filen _Layout.cshtml.

@using StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Du bör också ange var på webbsidan MiniProfiler-fönstret ska visas, dvs. renderpositionen. För att göra detta kan du inkludera följande uttalande i taggen.


  

Använd stegen i MiniProfiler för att profilera ASP.Net Core MVC-kod

MiniProfiler kommer att informera dig om sidladdningstider och information relaterad till prestanda för databasfrågorna. När du kör applikationen visas utdata som i figur 2 nedan. Notera MiniProfiler-fönstret längst upp till höger på skärmen.

För att lära dig hur lång tid det tar för en viss del av din kod att köra kan du utnyttja stegen. Följande kodavsnitt illustrerar hur detta kan uppnås.

offentligt IActionResult-index ()

 {

       var miniProfiler = MiniProfiler.Current;

       Listförfattare = ny lista ();

       miniProfiler.RenderIncludes (denna.HttpContext);

       använder (miniProfiler.Step ("Skaffa författare"))

       {

           author.Add (ny författare () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Adress = "Hyderabad, Indien"});

           author.Add (ny författare () {Id = 2, FirstName = "Stephen", LastName = "Smith", Adress = "NY, USA"});

           author.Add (ny författare () {Id = 3, FirstName = "Anand", LastName = "Narayanan", Address = "Chennai, India"});

           author.Add (ny författare () {Id = 4, FirstName = "Steve", LastName = "Jones", Adress = "London, Storbritannien"});

       }

           return View (författare);

 }

Följande kodavsnitt visar hur den ovannämnda författarklassen ser ut.

public class Författare

    {

        public int Id {get; uppsättning; }

        public string Förnamn {get; uppsättning; }

        public string LastName {get; uppsättning; }

        public string Adress {get; uppsättning; }

    }

När du kör applikationen följer du den tid det tog av steget vi definierade som visas i figur 3 nedan. Den post som jag har markerat med grönt visar hur lång tid det tar att utföra steget "Get Authors".

Om du vill ignorera en viss del av programmets kod från profilering kan du ange koden som ska ignoreras som visas i kodavsnittet nedan.

använder (MiniProfiler.Current.Ignore ())

{

  // Skriv kod här som du inte gör

  // vill att MiniProfiler ska profilera

}

Använd MiniProfiler för att profilera ADO.Net-frågor

Du kan också använda MiniProfiler för att profilera ADO.Net-frågor. För att göra det måste du dra nytta av ProfileDbConnection och ProfileDbCommand som visas i kodavsnittet nedan.

använder (SqlConnection connection = new SqlConnection (@ "Data Source = JOYDIP \ SQLEXPRESS; Initial Catalog = SyncDB; Trusted_Connection = Yes"))

     {

       använder (ProfiledDbConnection profiledDbConnection = ny ProfiledDbConnection (anslutning, MiniProfiler.Current))

         {

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

               profiledDbConnection.Open ();

             med (SqlCommand-kommando = nytt SqlCommand

              ("Välj * Från författare", anslutning))

               {

                 använder (ProfiledDbCommand profiledDbCommand =

                   ny ProfiledDbCommand (kommando, anslutning,

                     MiniProfiler.Current))

                       {                               

                         var data =

                          profiledDbCommand.ExecuteReader ();

              // Skriv kod här för att fylla i listan med författare

                        }

                 }

          }                      

    }

Observera hur ProfileDbConnection och ProfileDbCommand bryter in objekten DbConnection och DbCommand. Du kan lära dig mer om hur du profilerar källkoden med MiniProfiler från MiniProfilers webbplats.

MiniProfiler är en enkel profil för .Net, Ruby, Go och Node.js. Du kan använda MiniProfiler för att profilera frågor som genereras av Dapper, Linq2SQL och Entity Framework. Förutom att det är enkelt att använda, lägger MiniProfiler inte mycket overhead till dina applikationer. Du kan använda MiniProfiler för att profilera applikationer i produktion utan betydande prestandapåverkan.