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.
- Spusťte Visual Studio 2017 IDE.
- Klikněte na Soubor> Nový> Projekt.
- V seznamu zobrazených šablon vyberte „Webová aplikace ASP.Net Core (.Net Core)“.
- Zadejte název projektu.
- Kliknutím na OK projekt uložíte.
- Zobrazí se nové okno „New .Net Core Web Application…“.
- 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.
- Jako šablonu projektu vyberte „Web Application (Model-View-Controller)“ (jak je znázorněno na obrázku 1 níže).
- Zaškrtněte políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“. Tyto funkce zde nebudeme používat.
- Ujistěte se, že je vybráno „Žádné ověření“. Ani zde nebudeme používat ověřování.
- 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ů.
- Vyberte projekt v okně Průzkumníka řešení.
- Klikněte pravým tlačítkem a vyberte možnost „Spravovat balíčky NuGet ...“
- Vyhledejte balíček „MiniProfiler.AspNetCore.Mvc“.
- 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.