Как да използвам MiniProfiler в ASP.Net Core

Ефективността на уеб приложенията е сериозна загриженост по целия свят. Разработчиците имат много инструменти, които могат да използват за профилиране на уеб приложения и намиране на тесни места за ефективността. MiniProfiler е един такъв инструмент - прост, но мощен инструмент за профилиране на уеб приложения. MiniProfiler ви помага да откривате бавно работещи заявки, бавно време за реакция на сървъра и други. 

MiniProfiler се предлага за .Net, ASP.Net и ASP.Net Core. Ще намерите документацията за MiniProfiler на GitHub. Тази статия представя дискусия на MiniProfiler, защо е полезен и как можем да го използваме, за да профилираме приложенията на ASP.Net Core MVC и да открием проблеми с производителността в нашите приложения.

Създайте ASP.Net Core MVC проект в Visual Studio 2017

Първо, нека създадем ASP.Net Core MVC проект в Visual Studio. Ако Visual Studio 2017 работи и работи във вашата система, следвайте стъпките, дадени по-долу, за да създадете ASP.Net Core MVC проект.

  1. Стартирайте IDE на Visual Studio 2017.
  2. Щракнете върху Файл> Ново> Проект.
  3. Изберете „ASP.Net Core Web Application (.Net Core)“ от показания списък с шаблони.
  4. Посочете име за проекта.
  5. Щракнете върху OK, за да запазите проекта.
  6. Ще се покаже нов прозорец „New .Net Core Web Application ...“.
  7. Изберете .Net Core като време на изпълнение и ASP.Net Core 2.1 (или по-нова версия) от падащия списък в горната част. Използвам .Net Core 2.2.
  8. Изберете “Web Application (Model-View-Controller)” като шаблон на проекта (както е показано на фигура 1 по-долу).
  9. Уверете се, че отметките „Enable Docker Support“ и „Configure for HTTPS“ не са отметнати. Тук няма да използваме тези функции.
  10. Уверете се, че е избрано „No Authentication“. Тук също няма да използваме удостоверяване.
  11. Щракнете върху OK. 

Следвайки тези стъпки ще създадете нов ASP.Net Core MVC проект в Visual Studio. Ще използваме този проект, за да профилираме приложението с помощта на MiniProfiler.

Инсталирайте и конфигурирайте MiniProfiler в ASP.Net Core

За да започнете работа с MiniProfiler, трябва да инсталирате необходимия пакет NuGet. За да инсталирате MiniProfiler във вашия проект, следвайте стъпките, дадени по-долу.

  1. Изберете проекта в прозореца на Solution Explorer. 
  2. Щракнете с десния бутон и изберете „Управление на NuGet пакети ...“
  3. Потърсете пакета „MiniProfiler.AspNetCore.Mvc“. 
  4. Щракнете върху „Инсталиране“, за да инсталирате пакета NuGet. 

Това ще инсталира пакета MiniProfiler.AspNetCore.Mvc NuGet във вашия проект. За да започнете да използвате MiniProfiler във вашия проект, ще трябва да го конфигурирате в началния клас. Следният кодов фрагмент показва как можете да извикате метода AddMiniProfiler в екземпляра IServiceCollection, за да добавите MiniProfiler към конвейера.

публична невалидна ConfigureServices (услуги на IServiceCollection)

        {

            услуги.AddMiniProfiler (опции =>

            options.RouteBasePath = "/ профилиране"

            );

            // Обикновен код

        }

Можете да научите повече за опциите, които можете да посочите при регистрация на MiniProfiler с конвейера от уебсайта на MiniProfiler тук.

Трябва също да извикате метода UseMiniProfiler в екземпляра IApplicationBuilder, за да започнете да използвате MiniProfiler във вашите контролери и изгледи.

public void Configure (приложение IApplicationBuilder, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Обикновен код

    }

След това добавете следните два реда в маркера във файла _Layout.cshtml.

@ Използване на StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Също така трябва да посочите къде в уеб страницата трябва да се показва прозорецът MiniProfiler, т.е. позицията на визуализация. За да направите това, можете да включите следния израз в етикета.


  

Използвайте стъпки в MiniProfiler, за да профилирате ASP.Net Core MVC код

MiniProfiler ще ви уведоми за времето за зареждане на страницата и информация, свързана с изпълнението на заявките към базата данни. Когато стартирате приложението, изходът ще се появи, както е показано на фигура 2 по-долу. Обърнете внимание на прозореца MiniProfiler в горния десен ъгъл на екрана.

За да научите времето, необходимо за изпълнението на определена част от кода, можете да се възползвате от стъпките. Следният кодов фрагмент илюстрира как това може да се постигне.

публичен индекс на IActionResult ()

 {

       var miniProfiler = MiniProfiler.Current;

       Автори на списъка = нов Списък ();

       miniProfiler.RenderIncludes (this.HttpContext);

       използване (miniProfiler.Step ("Вземете автори"))

       {

           автори.Добавете (нов автор () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Address = "Hyderabad, India"});

           автори.Добавете (нов автор () {Id = 2, FirstName = "Stephen", LastName = "Smith", Address = "NY, USA"});

           автори.Добавете (нов автор () {Id = 3, FirstName = "Anand", LastName = "Narayanan", Address = "Chennai, India"});

           автори.Добавете (нов автор () {Id = 4, FirstName = "Steve", LastName = "Jones", Address = "London, UK"});

       }

           return View (автори);

 }

Следният кодов фрагмент показва как изглежда гореспоменатият клас на Автор.

публична класа Автор

    {

        public int Id {get; комплект; }

        публичен низ FirstName {get; комплект; }

        публичен низ LastName {get; комплект; }

        публичен низ Адрес {get; комплект; }

    }

Когато стартирате приложението, ще наблюдавате времето, необходимо от стъпката, която дефинирахме, както е показано на Фигура 3 по-долу. Записът, който съм подчертал в зелено, показва времето, необходимо за изпълнение на стъпката „Вземи автори“.

Ако искате да игнорирате конкретна част от кода на вашето приложение от профилиране, можете да посочите кода, който да се игнорира, както е показано в кодовия фрагмент по-долу.

с помощта на (MiniProfiler.Current.Ignore ())

{

  // Напишете код тук, но не

  // искам MiniProfiler да профилира

}

Използвайте MiniProfiler за профилиране на ADO.Net заявки

Можете също да използвате MiniProfiler за профилиране на ADO.Net заявки. За да направите това, ще трябва да се възползвате от ProfileDbConnection и ProfileDbCommand, както е показано в кодовия фрагмент по-долу.

използване (връзка на SqlConnection = нова SqlConnection (@ "Източник на данни = JOYDIP \ SQLEXPRESS; Първоначален каталог = SyncDB; Trusted_Connection = Да"))

     {

       използвайки (ProfiledDbConnection profiledDbConnection = нов ProfiledDbConnection (връзка, MiniProfiler.Current))

         {

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

               profiledDbConnection.Open ();

             използвайки [команда SqlCommand = нов SqlCommand

              ("Избор * от автори", връзка))

               {

                 използване (ProfiledDbCommand profiledDbCommand =

                   нов ProfiledDbCommand (команда, връзка,

                     MiniProfiler.Trenutno))

                       {                               

                         var данни =

                          profiledDbCommand.ExecuteReader ();

              // Напишете код тук, за да попълните списъка с автори

                        }

                 }

          }                      

    }

Обърнете внимание как ProfileDbConnection и ProfileDbCommand обвиват обектите DbConnection и DbCommand. Можете да научите повече за това как да профилирате изходния код с помощта на MiniProfiler от уебсайта на MiniProfiler.

MiniProfiler е прост профилист за .Net, Ruby, Go и Node.js. Можете да използвате MiniProfiler за профилиране на заявки, генерирани от Dapper, Linq2SQL и Entity Framework. Освен че е лесен за използване, MiniProfiler не добавя много режийни разходи към вашите приложения. Можете да използвате MiniProfiler за профилиране на приложения в производство без значително въздействие върху производителността.