Programování

Jak používat MiniProfiler v ASP.Net Core

Výkon webových aplikací je po celém světě vážným problémem. Vývojáři mají mnoho nástrojů, které mohou použít k profilování webových aplikací a hledání úzkých míst výkonu. MiniProfiler je jeden takový nástroj - jednoduchý, ale výkonný nástroj pro profilování webových aplikací. MiniProfiler vám pomůže detekovat pomalu běžící dotazy, pomalé doby odezvy serveru a další.

MiniProfiler je k dispozici pro .Net, ASP.Net a ASP.Net Core. Dokumentaci pro MiniProfiler najdete na GitHubu. Tento článek představuje diskusi o MiniProfileru, proč je užitečný a jak jej můžeme použít k profilování aplikací ASP.Net Core MVC a objevování problémů s výkonem v našich aplikacích.

Vytvořte projekt ASP.Net Core MVC v Visual Studio 2017

Nejprve si vytvořme projekt ASP.Net Core MVC v sadě Visual Studio. Pokud je Visual Studio 2017 ve vašem systému funkční, vytvořte projekt ASP.Net Core MVC podle pokynů uvedených níže.

  1. Spusťte Visual Studio 2017 IDE.
  2. Klikněte na Soubor> Nový> Projekt.
  3. V seznamu zobrazených šablon vyberte „Webová aplikace ASP.Net Core (.Net Core)“.
  4. Zadejte název projektu.
  5. Kliknutím na OK projekt uložíte.
  6. Zobrazí se nové okno „New .Net Core Web Application…“.
  7. Vyberte .NET Core jako běhový modul a ASP.Net Core 2.1 (nebo novější) z rozevíracího seznamu v horní části. Používám .Net Core 2.2.
  8. Jako šablonu projektu vyberte „Web Application (Model-View-Controller)“ (jak je znázorněno na obrázku 1 níže).
  9. Zaškrtněte políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“. Tyto funkce zde nebudeme používat.
  10. Ujistěte se, že je vybráno „Žádné ověření“. Ani zde nebudeme používat ověřování.
  11. Klikněte na OK.

Následující kroky vytvoří nový projekt ASP.Net Core MVC v sadě Visual Studio. Tento projekt použijeme k profilování aplikace pomocí MiniProfiler.

Nainstalujte a nakonfigurujte MiniProfiler v ASP.Net Core

Abyste mohli začít pracovat s MiniProfilerem, musíte si nainstalovat potřebný balíček NuGet. Chcete-li do projektu nainstalovat MiniProfiler, postupujte podle níže uvedených kroků.

  1. Vyberte projekt v okně Průzkumníka řešení.
  2. Klikněte pravým tlačítkem a vyberte možnost „Spravovat balíčky NuGet ...“
  3. Vyhledejte balíček „MiniProfiler.AspNetCore.Mvc“.
  4. Kliknutím na „Instalovat“ nainstalujete balíček NuGet.

Tím se do vašeho projektu nainstaluje balíček NuGet MiniProfiler.AspNetCore.Mvc. Chcete-li ve svém projektu začít používat MiniProfiler, budete jej muset nakonfigurovat ve třídě Startup. Následující fragment kódu ukazuje, jak můžete zavolat AddMiniProfiler metodu na instanci IServiceCollection a přidat MiniProfiler do kanálu.

public void ConfigureServices (služby IServiceCollection)

        {

services.AddMiniProfiler (možnosti =>

options.RouteBasePath = "/ profiler"

            );

// Obvyklý kód

        }

Další informace o možnostech, které můžete zadat při registraci MiniProfiler s kanálem, se dozvíte z webu MiniProfiler zde.

Měli byste také vyvolat metodu UseMiniProfiler na instanci IApplicationBuilder, abyste mohli začít používat MiniProfiler ve svých řadičích a pohledech.

public void Configure (aplikace IApplicationBuilder, IHostingEnvironment env)

    {

app.UseMiniProfiler ();

// Obvyklý kód

    }

Dále přidejte následující dva řádky uvnitř značky v souboru _Layout.cshtml.

@ pomocí StackExchange.Profilace

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Měli byste také určit, kde na webové stránce má být okno MiniProfiler zobrazeno, tj. Pozice vykreslení. Chcete-li to provést, můžete do značky zahrnout následující příkaz.

Pomocí kroků v MiniProfileru můžete profilovat kód ASP.Net Core MVC

MiniProfiler vám sdělí časy načítání stránky a informace související s výkonem databázových dotazů. Při spuštění aplikace se výstup zobrazí jako na obrázku 2 níže. Všimněte si okna MiniProfiler v pravém horním rohu obrazovky.

Chcete-li zjistit čas potřebný k provedení určité části vašeho kódu, můžete využít výhod kroků. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

veřejný index IActionResult ()

 {

var miniProfiler = MiniProfiler.Current;

Seznam autorů = nový Seznam ();

miniProfiler.RenderIncludes (this.HttpContext);

pomocí (miniProfiler.Step ("Získat autory"))

       {

autoři.Přidat (nový autor () {Id = 1, křestní jméno = "Joydip", příjmení = "Kanjilal", adresa = "Hyderabad, Indie"});

autoři.Přidat (nový autor () {Id = 2, křestní jméno = "Stephen", příjmení = "Smith", adresa = "NY, USA"});

autoři.Přidat (nový autor () {Id = 3, křestní jméno = "Anand", příjmení = "Narayanan", adresa = "Chennai, Indie"});

autoři.Přidat (nový autor () {Id = 4, FirstName = "Steve", LastName = "Jones", Address = "London, UK"});

       }

návrat Zobrazit (autoři);

 }

Následující fragment kódu ukazuje, jak vypadá výše uvedená třída Author.

veřejná třída Autor

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

public string Adresa {get; soubor; }

    }

Při spuštění aplikace budete sledovat čas, který jsme strávili krokem, který jsme definovali, jak je znázorněno na obrázku 3 níže. Položka, kterou jsem zvýraznil zeleně, ukazuje čas potřebný k provedení kroku „Získat autory“.

Pokud chcete ignorovat konkrétní část kódu vaší aplikace z profilování, můžete určit kód, který má být ignorován, jak je uvedeno v úryvku kódu níže.

pomocí (MiniProfiler.Current.Ignore ())

{

// Sem napište kód, který nemáte

// chcete, aby MiniProfiler profiloval

}

Použijte MiniProfiler k profilování dotazů ADO.Net

MiniProfiler můžete také použít k profilování dotazů ADO.Net. Chcete-li to udělat, budete muset využít výhod ProfileDbConnection a ProfileDbCommand, jak je znázorněno v fragmentu kódu níže.

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

     {

pomocí (ProfiledDbConnection profiledDbConnection = nový ProfiledDbConnection (připojení, MiniProfiler.Current))

         {

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

profiledDbConnection.Open ();

pomocí příkazu (SqlCommand = nový SqlCommand

(„Vybrat * od autorů“, připojení))

               {

pomocí (ProfiledDbCommand profiledDbCommand =

nový ProfiledDbCommand (příkaz, připojení,

MiniProfiler.Current))

                       {                               

var data =

profiledDbCommand.ExecuteReader ();

// Sem napište kód pro vyplnění seznamu autorů

                        }

                 }

          }                      

    }

Všimněte si, jak ProfileDbConnection a ProfileDbCommand zalamují objekty DbConnection a DbCommand. Další informace o tom, jak profilovat zdrojový kód pomocí programu MiniProfiler, se dozvíte z webu MiniProfiler.

MiniProfiler je jednoduchý profiler pro .Net, Ruby, Go a Node.js. MiniProfiler můžete použít k profilování dotazů, které generují Dapper, Linq2SQL a Entity Framework. Kromě toho, že se MiniProfiler snadno používá, nepřináší vašim aplikacím mnoho režijních nákladů. MiniProfiler můžete použít k profilování aplikací ve výrobě bez významného dopadu na výkon.

$config[zx-auto] not found$config[zx-overlay] not found