Kako koristiti MiniProfiler u ASP.Net Coreu

Izvedba web aplikacija ozbiljna je briga širom svijeta. Programeri imaju mnogo alata koje mogu koristiti za profiliranje web aplikacija i pronalaženje uskih grla u izvedbi. MiniProfiler jedan je od takvih alata - jednostavan, ali moćan alat za profiliranje web aplikacija. MiniProfiler vam pomaže otkriti sporo pokretanje upita, sporo vrijeme odziva poslužitelja i još mnogo toga. 

MiniProfiler dostupan je za .Net, ASP.Net i ASP.Net Core. Dokumentaciju za MiniProfiler pronaći ćete na GitHubu. Ovaj članak predstavlja raspravu o MiniProfileru, zašto je koristan i kako ga možemo koristiti za profiliranje ASP.Net Core MVC aplikacija i otkrivanje problema s performansama u našim aplikacijama.

Stvorite ASP.Net Core MVC projekt u Visual Studio 2017

Prvo, kreirajmo ASP.Net Core MVC projekt u Visual Studiju. Ako je Visual Studio 2017 pokrenut i pokrenut u vašem sustavu, slijedite korake dane u nastavku za stvaranje ASP.Net Core MVC projekta.

  1. Pokrenite Visual Studio 2017 IDE.
  2. Kliknite Datoteka> Novo> Projekt.
  3. S popisa predložaka odaberite „ASP.Net Core Web Application (.Net Core)“.
  4. Navedite naziv projekta.
  5. Kliknite U redu da biste spremili projekt.
  6. Prikazat će se novi prozor "New .Net Core Web Application ...".
  7. Na padajućem popisu na vrhu odaberite .Net Core kao runtime i ASP.Net Core 2.1 (ili noviju). Koristim .Net Core 2.2.
  8. Odaberite „Web aplikacija (Model-View-Controller)“ kao predložak projekta (kao što je prikazano na slici 1 dolje).
  9. Obavezno isključite potvrdne okvire "Omogući podršku za Docker" i "Konfiguriranje za HTTPS". Ovdje nećemo koristiti ove značajke.
  10. Provjerite je li odabrano "No Authentication". Ni ovdje nećemo koristiti autentifikaciju.
  11. Kliknite U redu. 

Slijedom ovih koraka stvorit ćete novi ASP.Net Core MVC projekt u Visual Studiju. Ovaj ćemo projekt koristiti za profiliranje aplikacije pomoću MiniProfiler-a.

Instalirajte i konfigurirajte MiniProfiler u ASP.Net Core

Da biste započeli rad s MiniProfilerom, morate instalirati nužni NuGet paket. Da biste instalirali MiniProfiler u svoj projekt, slijedite korake dane u nastavku.

  1. Odaberite projekt u prozoru Solution Explorer. 
  2. Desnom tipkom miša odaberite "Manage NuGet Packages ..."
  3. Potražite paket "MiniProfiler.AspNetCore.Mvc". 
  4. Kliknite "Instaliraj" da biste instalirali NuGet paket. 

Ovo će instalirati paket MiniProfiler.AspNetCore.Mvc NuGet u vaš projekt. Da biste počeli koristiti MiniProfiler u svom projektu, morat ćete ga konfigurirati u klasi Startup. Sljedeći isječak koda pokazuje kako možete pozvati metodu AddMiniProfiler na instanci IServiceCollection da biste dodali MiniProfiler u cjevovod.

javna praznina ConfigureServices (usluge IServiceCollection)

        {

            usluge.AddMiniProfiler (opcije =>

            options.RouteBasePath = "/ profiler"

            );

            // Uobičajeni kod

        }

Ovdje možete saznati više o opcijama koje možete odrediti prilikom registracije MiniProfiler-a na cjevovodu.

Također biste trebali pozvati metodu UseMiniProfiler na instanci IApplicationBuilder da biste počeli koristiti MiniProfiler u svojim kontrolerima i pogledima.

javna void konfiguracija (aplikacija IApplicationBuilder, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Uobičajeni kod

    }

Zatim dodajte sljedeća dva retka unutar oznake u datoteci _Layout.cshtml.

@ koristeći StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Također biste trebali odrediti gdje na web stranici treba biti prikazan prozor MiniProfiler, tj. Položaj prikaza. Da biste to učinili, možete uključiti sljedeću izjavu unutar oznake.


  

Koristite korake u MiniProfileru za profiliranje ASP.Net Core MVC koda

MiniProfiler će vas obavijestiti o vremenima učitavanja stranice i informacijama vezanim uz izvedbu upita baze podataka. Kada pokrenete aplikaciju, izlaz će se pojaviti kao na slici 2 dolje. Obratite pažnju na prozor MiniProfiler u gornjem desnom kutu zaslona.

Da biste saznali koliko je vremena potrebno izvršenju određenog dijela koda, možete iskoristiti korake. Sljedeći isječak koda ilustrira kako se to može postići.

javni indeks IActionResult ()

 {

       var miniProfiler = MiniProfiler.Trenutno;

       Autori popisa = novi Popis ();

       miniProfiler.RenderIncludes (this.HttpContext);

       pomoću (miniProfiler.Step ("Potraži autore"))

       {

           autori.Dodaj (novi autor () {Id = 1, Ime = "Joydip", Prezime = "Kanjilal", Adresa = "Hyderabad, Indija"});

           autori.Dodaj (novi autor () {Id = 2, Ime = "Stjepan", Prezime = "Smith", Adresa = "NY, SAD"});

           autori.Add (novi autor () {Id = 3, Ime = "Anand", Prezime = "Narayanan", Adresa = "Chennai, Indija"});

           autori.Dodaj (novi autor () {Id = 4, Ime = "Steve", Prezime = "Jones", Adresa = "London, UK"});

       }

           povratak Pogled (autori);

 }

Sljedeći isječak koda pokazuje kako izgleda gore spomenuta klasa Author.

javni razred Autor

    {

        javni int Id {get; postavljen; }

        javni niz FirstName {get; postavljen; }

        javni niz LastName {get; postavljen; }

        javni niz Adresa {get; postavljen; }

    }

Kada pokrenete aplikaciju, promatrat ćete vrijeme potrebno korakom koji smo definirali kao što je prikazano na slici 3 dolje. Unos koji sam označio zelenom bojom pokazuje vrijeme potrebno za izvršavanje koraka "Nabavi autore".

Ako želite zanemariti određeni dio koda vaše aplikacije iz profiliranja, možete odrediti kod koji će se ignorirati kao što je prikazano u isječku koda u nastavku.

pomoću (MiniProfiler.Current.Ignore ())

{

  // Ovdje napiši kod koji nemaš

  // želimo da MiniProfiler profilira

}

Upotrijebite MiniProfiler za profiliranje ADO.Net upita

MiniProfiler možete koristiti i za profilisanje ADO.Net upita. Da biste to učinili, trebali biste iskoristiti ProfileDbConnection i ProfileDbCommand kao što je prikazano u isječku koda u nastavku.

pomoću (SqlConnection veza = nova SqlConnection (@ "Izvor podataka = JOYDIP \ SQLEXPRESS; Početni katalog = SyncDB; Trusted_Connection = Da"))

     {

       pomoću (ProfiledDbConnection profiledDbConnection = novi ProfiledDbConnection (veza, MiniProfiler.Current))

         {

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

               profiledDbConnection.Open ();

             pomoću (naredba SqlCommand = novi SqlCommand

              ("Odabir * od autora", veza))

               {

                 pomoću (ProfiledDbCommand profiledDbCommand =

                   novi ProfiledDbCommand (naredba, veza,

                     MiniProfiler.Trenutno))

                       {                               

                         var podaci =

                          profiledDbCommand.ExecuteReader ();

              // Ovdje napišite kod za popunjavanje popisa autora

                        }

                 }

          }                      

    }

Primijetite kako ProfileDbConnection i ProfileDbCommand obavijaju objekte DbConnection i DbCommand. Na web mjestu MiniProfiler možete saznati više o tome kako profilirati izvorni kod pomoću MiniProfiler.

MiniProfiler je jednostavan profiler za .Net, Ruby, Go i Node.js. MiniProfiler možete koristiti za profiliranje upita koje generiraju Dapper, Linq2SQL i Entity Framework. Osim što je jednostavan za upotrebu, MiniProfiler ne dodaje previše troškova vašim aplikacijama. MiniProfiler možete koristiti za profiliranje aplikacija u proizvodnji bez značajnog utjecaja na performanse.