Verwendung von MiniProfiler in ASP.Net Core

Die Leistung von Webanwendungen ist weltweit ein ernstes Problem. Entwickler verfügen über viele Tools, mit denen sie Webanwendungen profilieren und Leistungsengpässe ermitteln können. MiniProfiler ist ein solches Tool - ein einfaches und dennoch leistungsstarkes Tool zum Profilieren von Webanwendungen. Mit MiniProfiler können Sie langsam laufende Abfragen, langsame Serverantwortzeiten und mehr erkennen. 

MiniProfiler ist für .Net, ASP.Net und ASP.Net Core verfügbar. Die Dokumentation zu MiniProfiler finden Sie auf GitHub. In diesem Artikel wird erläutert, warum MiniProfiler nützlich ist und wie wir damit ASP.Net Core MVC-Anwendungen profilieren und Leistungsprobleme in unseren Anwendungen erkennen können.

Erstellen Sie ein ASP.Net Core MVC-Projekt in Visual Studio 2017

Zunächst erstellen wir ein ASP.Net Core MVC-Projekt in Visual Studio. Wenn Visual Studio 2017 auf Ihrem System ausgeführt wird, führen Sie die folgenden Schritte aus, um ein ASP.Net Core MVC-Projekt zu erstellen.

  1. Starten Sie die Visual Studio 2017-IDE.
  2. Klicken Sie auf Datei> Neu> Projekt.
  3. Wählen Sie "ASP.Net Core-Webanwendung (.Net Core)" aus der Liste der angezeigten Vorlagen.
  4. Geben Sie einen Namen für das Projekt an.
  5. Klicken Sie auf OK, um das Projekt zu speichern.
  6. Ein neues Fenster mit dem Titel "Neue .Net Core-Webanwendung ..." wird angezeigt.
  7. Wählen Sie .Net Core als Laufzeit und ASP.Net Core 2.1 (oder höher) aus der Dropdown-Liste oben aus. Ich verwende .Net Core 2.2.
  8. Wählen Sie als Projektvorlage „Webanwendung (Model-View-Controller)“ (siehe Abbildung 1 unten).
  9. Stellen Sie sicher, dass die Kontrollkästchen "Docker-Unterstützung aktivieren" und "Für HTTPS konfigurieren" deaktiviert sind. Wir werden diese Funktionen hier nicht verwenden.
  10. Stellen Sie sicher, dass "Keine Authentifizierung" ausgewählt ist. Wir werden auch hier keine Authentifizierung verwenden.
  11. OK klicken. 

Durch Ausführen dieser Schritte wird ein neues ASP.Net Core MVC-Projekt in Visual Studio erstellt. Wir werden dieses Projekt verwenden, um die Anwendung mit MiniProfiler zu profilieren.

Installieren und konfigurieren Sie MiniProfiler in ASP.Net Core

Um mit MiniProfiler arbeiten zu können, müssen Sie das erforderliche NuGet-Paket installieren. Führen Sie die folgenden Schritte aus, um MiniProfiler in Ihrem Projekt zu installieren.

  1. Wählen Sie das Projekt im Projektmappen-Explorer aus. 
  2. Klicken Sie mit der rechten Maustaste und wählen Sie "NuGet-Pakete verwalten ...".
  3. Suchen Sie nach dem Paket "MiniProfiler.AspNetCore.Mvc". 
  4. Klicken Sie auf "Installieren", um das NuGet-Paket zu installieren. 

Dadurch wird das MiniGrofiler.AspNetCore.Mvc NuGet-Paket in Ihrem Projekt installiert. Um MiniProfiler in Ihrem Projekt verwenden zu können, müssen Sie es in der Startup-Klasse konfigurieren. Das folgende Codefragment zeigt, wie Sie die AddMiniProfiler-Methode für die IServiceCollection-Instanz aufrufen können, um der Pipeline MiniProfiler hinzuzufügen.

public void ConfigureServices (IServiceCollection-Dienste)

        {

            services.AddMiniProfiler (Optionen =>

            options.RouteBasePath = "/ profiler"

            );

            // Üblicher Code

        }}

Weitere Informationen zu den Optionen, die Sie bei der Registrierung von MiniProfiler für die Pipeline angeben können, finden Sie auf der MiniProfiler-Website hier.

Sie sollten auch die UseMiniProfiler-Methode für die IApplicationBuilder-Instanz aufrufen, um MiniProfiler in Ihren Controllern und Ansichten zu verwenden.

public void Configure (IApplicationBuilder-App, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Üblicher Code

    }}

Fügen Sie als Nächstes die folgenden zwei Zeilen in das Tag in der Datei _Layout.cshtml ein.

@ using StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Sie sollten auch angeben, wo auf der Webseite das MiniProfiler-Fenster angezeigt werden soll, dh die Renderposition. Dazu können Sie die folgende Anweisung in das Tag einfügen.


  

Verwenden Sie die Schritte in MiniProfiler, um den ASP.Net Core MVC-Code zu profilieren

MiniProfiler informiert Sie über die Ladezeiten der Seite und über Informationen zur Leistung der Datenbankabfragen. Wenn Sie die Anwendung ausführen, wird die Ausgabe wie in Abbildung 2 unten angezeigt. Beachten Sie das MiniProfiler-Fenster in der oberen rechten Ecke des Bildschirms.

Sie können die Schritte nutzen, um zu erfahren, wie lange es dauert, bis ein bestimmter Teil Ihres Codes ausgeführt wird. Das folgende Codefragment zeigt, wie dies erreicht werden kann.

öffentlicher IActionResult Index ()

 {

       var miniProfiler = MiniProfiler.Current;

       Listenautoren = neue Liste ();

       miniProfiler.RenderIncludes (this.HttpContext);

       using (miniProfiler.Step ("Get Authors"))

       {

           Autoren.Add (neuer Autor () {Id = 1, Vorname = "Joydip", Nachname = "Kanjilal", Adresse = "Hyderabad, Indien"});

           Autoren.Add (neuer Autor () {Id = 2, Vorname = "Stephen", Nachname = "Smith", Adresse = "NY, USA"});

           Autoren.Add (neuer Autor () {Id = 3, Vorname = "Anand", Nachname = "Narayanan", Adresse = "Chennai, Indien"});

           Autoren.Add (neuer Autor () {Id = 4, Vorname = "Steve", Nachname = "Jones", Adresse = "London, UK"});

       }}

           return View (Autoren);

 }}

Das folgende Codefragment zeigt, wie die oben genannte Author-Klasse aussieht.

öffentliche Klasse Autor

    {

        public int Id {get; einstellen; }}

        öffentliche Zeichenfolge Vorname {get; einstellen; }}

        öffentlicher String Nachname {get; einstellen; }}

        öffentliche Zeichenfolge Adresse {get; einstellen; }}

    }}

Wenn Sie die Anwendung ausführen, sehen Sie die Zeit, die der von uns definierte Schritt benötigt (siehe Abbildung 3 unten). Der grün hervorgehobene Eintrag zeigt die Zeit an, die zum Ausführen des Schritts "Autoren abrufen" benötigt wird.

Wenn Sie einen bestimmten Teil des Codes Ihrer Anwendung bei der Profilerstellung ignorieren möchten, können Sie den zu ignorierenden Code angeben, wie im folgenden Codeausschnitt gezeigt.

using (MiniProfiler.Current.Ignore ())

{

  // Schreibe hier Code, den du nicht tust

  // möchte, dass MiniProfiler ein Profil erstellt

}}

Verwenden Sie MiniProfiler, um ADO.Net-Abfragen zu profilieren

Sie können MiniProfiler auch zum Profilieren von ADO.Net-Abfragen verwenden. Dazu müssten Sie ProfileDbConnection und ProfileDbCommand nutzen, wie im folgenden Codeausschnitt gezeigt.

using (SqlConnection connection = new SqlConnection (@ "Datenquelle = JOYDIP \ SQLEXPRESS; Erstkatalog = SyncDB; Trusted_Connection = Yes"))

     {

       using (ProfiledDbConnection profiledDbConnection = new ProfiledDbConnection (Verbindung, MiniProfiler.Current))

         {

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

               profiledDbConnection.Open ();

             using (Befehl SqlCommand = neuer Befehl SqlCommand

              ("Select * From Authors", Verbindung))

               {

                 using (ProfiledDbCommand profiledDbCommand =

                   neuer ProfiledDbCommand (Befehl, Verbindung,

                     MiniProfiler.Current))

                       {                               

                         var data =

                          profiledDbCommand.ExecuteReader ();

              // Schreiben Sie hier Code, um die Liste der Autoren zu füllen

                        }}

                 }}

          }}                      

    }}

Beachten Sie, wie ProfileDbConnection und ProfileDbCommand die Objekte DbConnection und DbCommand umschließen. Weitere Informationen zum Profilieren von Quellcode mit MiniProfiler finden Sie auf der MiniProfiler-Website.

MiniProfiler ist ein einfacher Profiler für .Net, Ruby, Go und Node.js. Mit MiniProfiler können Sie Abfragen profilieren, die von Dapper, Linq2SQL und Entity Framework generiert werden. MiniProfiler ist nicht nur einfach zu bedienen, sondern bringt auch nicht viel Aufwand in Ihre Anwendungen. Mit MiniProfiler können Sie Anwendungen in der Produktion ohne wesentliche Auswirkungen auf die Leistung profilieren.