Programmering

Sådan bruges MiniProfiler i ASP.Net Core

Udførelsen af ​​webapplikationer er en alvorlig bekymring verden over. Udviklere har mange værktøjer, de kan bruge til at profilere webapplikationer og finde ydeevne flaskehalse. MiniProfiler er et sådant værktøj - et simpelt, men alligevel kraftfuldt værktøj til profilering af webapplikationer. MiniProfiler hjælper dig med at opdage langsomt kørende forespørgsler, langsomme servers responstider og mere.

MiniProfiler er tilgængelig til .Net, ASP.Net og ASP.Net Core. Du finder dokumentationen til MiniProfiler på GitHub. Denne artikel præsenterer en diskussion af MiniProfiler, hvorfor det er nyttigt, og hvordan vi kan bruge det til at profilere ASP.Net Core MVC-applikationer og opdage ydeevneproblemer i vores applikationer.

Opret et ASP.Net Core MVC-projekt i Visual Studio 2017

Lad os først oprette et ASP.Net Core MVC-projekt i Visual Studio. Hvis Visual Studio 2017 er i gang i dit system, skal du følge nedenstående trin for at oprette et ASP.Net Core MVC-projekt.

  1. Start Visual Studio 2017 IDE.
  2. Klik på Filer> Ny> Projekt.
  3. Vælg “ASP.Net Core Web Application (.Net Core)” fra listen over skabeloner, der vises.
  4. Angiv et navn til projektet.
  5. Klik på OK for at gemme projektet.
  6. Et nyt vindue, "Nyt. Net Core Web Application ...", vises.
  7. Vælg .Net Core som runtime og ASP.Net Core 2.1 (eller nyere) fra rullelisten øverst. Jeg bruger .Net Core 2.2.
  8. Vælg "Webapplikation (Model-View-Controller)" som projektskabelon (som vist i figur 1 nedenfor).
  9. Sørg for, at afkrydsningsfelterne "Enable Docker Support" og "Configure for HTTPS" ikke er markeret. Vi bruger ikke disse funktioner her.
  10. Sørg for, at "Ingen godkendelse" er valgt. Vi bruger heller ikke godkendelse her.
  11. Klik på OK.

Ved at følge disse trin oprettes et nyt ASP.Net Core MVC-projekt i Visual Studio. Vi bruger dette projekt til at profilere applikationen ved hjælp af MiniProfiler.

Installer og konfigurer MiniProfiler i ASP.Net Core

For at komme i gang med at arbejde med MiniProfiler skal du installere den nødvendige NuGet-pakke. Følg trinene nedenfor for at installere MiniProfiler i dit projekt.

  1. Vælg projektet i vinduet Solution Explorer.
  2. Højreklik og vælg "Manage NuGet Packages ..."
  3. Søg efter "MiniProfiler.AspNetCore.Mvc" -pakken.
  4. Klik på “Installer” for at installere NuGet-pakken.

Dette installerer pakken MiniProfiler.AspNetCore.Mvc NuGet i dit projekt. For at begynde at bruge MiniProfiler i dit projekt skal du konfigurere det i opstartklassen. Følgende kodestykke viser, hvordan du kan kalde AddMiniProfiler-metoden på IServiceCollection-forekomsten for at tilføje MiniProfiler til pipelinen.

offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester)

        {

services.AddMiniProfiler (optioner =>

options.RouteBasePath = "/ profiler"

            );

// Almindelig kode

        }

Du kan lære mere om de muligheder, du kan angive, når du registrerer MiniProfiler til rørledningen fra MiniProfiler-webstedet her.

Du skal også påberåbe sig UseMiniProfiler-metoden i IApplicationBuilder-forekomsten for at begynde at bruge MiniProfiler i dine controllere og visninger.

public void Configure (IApplicationBuilder app, IHostingEnvironment env)

    {

app.UseMiniProfiler ();

// Almindelig kode

    }

Dernæst tilføj følgende to linjer inden for tagget i filen _Layout.cshtml.

@ ved hjælp af StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Du skal også specificere, hvor på websiden MiniProfiler-vinduet skal vises, dvs. gengivelsespositionen. For at gøre dette kan du medtage følgende udsagn inde i taggen.

Brug trin i MiniProfiler til at profilere ASP.Net Core MVC-kode

MiniProfiler giver dig besked om sidens indlæsningstid og information relateret til databaseforespørgslens ydeevne. Når du kører applikationen, vises output som i figur 2 nedenfor. Bemærk MiniProfiler-vinduet øverst til højre på skærmen.

For at lære den tid, det tager for en bestemt del af din kode at køre, kan du drage fordel af trin. Følgende kodestykke illustrerer, hvordan dette kan opnås.

offentligt IActionResult-indeks ()

 {

var miniProfiler = MiniProfiler.Current;

Listeforfattere = ny liste ();

miniProfiler.RenderIncludes (denne.HttpContext);

ved hjælp af (miniProfiler.Step ("Få forfattere"))

       {

author.Add (ny forfatter () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Adresse = "Hyderabad, Indien"});

author.Add (ny forfatter () {Id = 2, FirstName = "Stephen", LastName = "Smith", Adresse = "NY, USA"});

author.Add (ny forfatter () {Id = 3, FirstName = "Anand", LastName = "Narayanan", Adresse = "Chennai, Indien"});

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

       }

return Vis (forfattere);

 }

Følgende kodestykke viser, hvordan den ovennævnte forfatterklasse ser ud.

offentlig klasse Forfatter

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

public string Address {get; sæt; }

    }

Når du kører applikationen, vil du observere den tid, det tog med det trin, vi definerede som vist i figur 3 nedenfor. Den post, jeg har fremhævet i grønt, viser den tid, det tager at gennemføre trinnet "Få forfattere".

Hvis du vil ignorere en bestemt del af din applikations kode fra profilering, kan du angive den kode, der skal ignoreres, som vist i kodestykket nedenfor.

ved hjælp af (MiniProfiler.Current.Ignore ())

{

// Skriv kode her, som du ikke gør

// vil have MiniProfiler til profil

}

Brug MiniProfiler til at profilere ADO.Net-forespørgsler

Du kan også bruge MiniProfiler til at profilere ADO.Net-forespørgsler. For at gøre det bliver du nødt til at udnytte ProfileDbConnection og ProfileDbCommand som vist i kodestykket nedenfor.

ved hjælp af (SqlConnection-forbindelse = ny SqlConnection (@ "Datakilde = JOYDIP \ SQLEXPRESS; Indledende katalog = SyncDB; Trusted_Connection = Ja"))

     {

bruger (ProfiledDbConnection profiledDbConnection = ny ProfiledDbConnection (forbindelse, MiniProfiler.Current))

         {

hvis (profileretDbConnection.State! = System.Data.ConnectionState.Open)

profiledDbConnection.Open ();

ved hjælp af (SqlCommand-kommando = ny SqlCommand

("Vælg * Fra forfattere", forbindelse))

               {

ved hjælp af (ProfiledDbCommand profileretDbCommand =

ny ProfiledDbCommand (kommando, forbindelse,

MiniProfiler.Current))

                       {                               

var data =

profiledDbCommand.ExecuteReader ();

// Skriv kode her for at udfylde listen over forfattere

                        }

                 }

          }                      

    }

Bemærk, hvordan ProfileDbConnection og ProfileDbCommand ombryder DbConnection- og DbCommand-objekterne. Du kan lære mere om, hvordan du profilerer kildekoden ved hjælp af MiniProfiler fra MiniProfiler-webstedet.

MiniProfiler er en simpel profil til .Net, Ruby, Go og Node.js. Du kan bruge MiniProfiler til at profilere forespørgsler, der genereres af Dapper, Linq2SQL og Entity Framework. Ud over at være nem at bruge tilføjer MiniProfiler ikke meget overhead til dine applikationer. Du kan bruge MiniProfiler til at profilere applikationer i produktionen uden væsentlig præstationspåvirkning.