Cara menggunakan MiniProfiler dalam ASP.Net Core

Prestasi aplikasi web menjadi perhatian serius di seluruh dunia. Pembangun mempunyai banyak alat yang dapat mereka gunakan untuk profil aplikasi web dan mencari hambatan prestasi. MiniProfiler adalah salah satu alat tersebut - alat yang mudah tetapi kuat untuk memprofil aplikasi web. MiniProfiler membantu anda mengesan pertanyaan berjalan lambat, masa tindak balas pelayan lambat dan banyak lagi. 

MiniProfiler tersedia untuk .Net, ASP.Net, dan ASP.Net Core. Anda akan mendapat dokumentasi untuk MiniProfiler di GitHub. Artikel ini memaparkan perbincangan mengenai MiniProfiler, mengapa ia berguna, dan bagaimana kita dapat menggunakannya untuk memprofilkan aplikasi ASP.Net Core MVC dan menemui masalah prestasi dalam aplikasi kita.

Buat projek ASP.Net Core MVC di Visual Studio 2017

Pertama, mari buat projek ASP.Net Core MVC di Visual Studio. Sekiranya Visual Studio 2017 siap dan berjalan di sistem anda, ikuti langkah-langkah yang diberikan di bawah ini untuk membuat projek ASP.Net Core MVC.

  1. Lancarkan ID Studio Visual 2017.
  2. Klik pada Fail> Baru> Projek.
  3. Pilih "Aplikasi Web Teras ASP.Net (.Net Core)" dari senarai templat yang dipaparkan.
  4. Nyatakan nama untuk projek tersebut.
  5. Klik OK untuk menyimpan projek.
  6. Tetingkap baru, "Aplikasi Web Inti Bersih Baru ...", akan dipaparkan.
  7. Pilih .Net Core sebagai runtime dan ASP.Net Core 2.1 (atau lebih baru) dari senarai juntai bawah di bahagian atas. Saya menggunakan .Net Core 2.2.
  8. Pilih "Aplikasi Web (Model-View-Controller)" sebagai templat projek (seperti yang ditunjukkan dalam Gambar 1 di bawah).
  9. Pastikan bahawa kotak centang "Aktifkan Docker Support" dan "Configure for HTTPS" tidak dicentang. Kami tidak akan menggunakan ciri-ciri ini di sini.
  10. Pastikan "Tiada Pengesahan" dipilih. Kami juga tidak akan menggunakan pengesahan di sini.
  11. Klik OK. 

Mengikuti langkah-langkah ini akan membuat projek ASP.Net Core MVC baru di Visual Studio. Kami akan menggunakan projek ini untuk profil aplikasi menggunakan MiniProfiler.

Pasang dan konfigurasikan MiniProfiler dalam ASP.Net Core

Untuk mula bekerja dengan MiniProfiler, anda perlu memasang pakej NuGet yang diperlukan. Untuk memasang MiniProfiler dalam projek anda, ikuti langkah-langkah yang diberikan di bawah.

  1. Pilih projek di tetingkap Penyelesaian Penyelesaian. 
  2. Klik kanan dan pilih "Urus Pakej NuGet ..."
  3. Cari pakej "MiniProfiler.AspNetCore.Mvc". 
  4. Klik "Pasang" untuk memasang pakej NuGet. 

Ini akan memasang pakej MiniProfiler.AspNetCore.Mvc NuGet dalam projek anda. Untuk mula menggunakan MiniProfiler dalam projek anda, anda perlu mengkonfigurasinya di kelas Permulaan. Coretan kod berikut menunjukkan bagaimana anda boleh memanggil kaedah AddMiniProfiler pada instance IServiceCollection untuk menambahkan MiniProfiler ke saluran paip.

kekosongan awam ConfigureServices (perkhidmatan IServiceCollection)

        {

            perkhidmatan.AddMiniProfiler (pilihan =>

            pilihan.RouteBasePath = "/ profiler"

            );

            // Kod biasa

        }

Anda boleh mengetahui lebih lanjut mengenai pilihan yang dapat anda tentukan semasa mendaftar MiniProfiler dengan saluran paip dari laman web MiniProfiler di sini.

Anda juga harus menggunakan kaedah UseMiniProfiler pada instance IApplicationBuilder untuk mula menggunakan MiniProfiler dalam pengawal dan pandangan anda.

konfigurasi kekosongan awam (aplikasi IApplicationBuilder, IHostingEnvironment env)

    {

       app.UseMiniProfiler ();

       // Kod biasa

    }

Seterusnya tambahkan dua baris berikut di dalam tag dalam fail _Layout.cshtml.

@ menggunakan StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

Anda juga harus menentukan di mana di laman web tetingkap MiniProfiler harus ditampilkan, iaitu, kedudukan rendering. Untuk melakukan ini, anda boleh memasukkan pernyataan berikut di dalam teg.


  

Gunakan langkah-langkah dalam MiniProfiler untuk memprofilkan kod MVC Core ASP.Net

MiniProfiler akan memberitahu anda masa muat halaman dan maklumat yang berkaitan dengan prestasi pertanyaan pangkalan data. Semasa anda menjalankan aplikasi, output akan muncul seperti pada Gambar 2 di bawah. Perhatikan tetingkap MiniProfiler di sudut kanan atas skrin.

Untuk mengetahui masa yang diperlukan untuk melaksanakan bahagian tertentu kod anda, anda boleh memanfaatkan langkah-langkahnya. Coretan kod berikut menggambarkan bagaimana ini dapat dicapai.

Indeks IActionResult awam ()

 {

       var miniProfiler = MiniProfiler.Current;

       Senarai pengarang = Senarai baru ();

       miniProfiler.RenderIncludes (ini.HttpContext);

       menggunakan (miniProfiler.Step ("Dapatkan Pengarang"))

       {

           author.Add (Pengarang baru () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Alamat = "Hyderabad, India"});

           author.Add (Pengarang baru () {Id = 2, FirstName = "Stephen", LastName = "Smith", Alamat = "NY, USA"});

           author.Add (Pengarang baru () {Id = 3, FirstName = "Anand", LastName = "Narayanan", Alamat = "Chennai, India"});

           author.Add (Pengarang baru () {Id = 4, FirstName = "Steve", LastName = "Jones", Alamat = "London, UK"});

       }

           paparan kembali (pengarang);

 }

Coretan kod berikut menunjukkan rupa kelas Pengarang di atas.

Pengarang kelas awam

    {

        id int awam {dapatkan; menetapkan; }

        rentetan awam FirstName {get; menetapkan; }

        rentetan umum LastName {get; menetapkan; }

        rentetan awam Alamat {get; menetapkan; }

    }

Semasa menjalankan aplikasi, anda akan melihat masa yang diambil oleh langkah yang kami tentukan seperti yang ditunjukkan dalam Gambar 3 di bawah. Entri yang saya sorot dengan warna hijau menunjukkan masa yang diambil untuk melaksanakan langkah "Dapatkan Pengarang".

Sekiranya anda ingin mengabaikan bahagian tertentu dari kod aplikasi anda dari membuat profil, anda boleh menentukan kod yang akan diabaikan seperti yang ditunjukkan dalam coretan kod di bawah.

menggunakan (MiniProfiler.Current. Abaikan ())

{

  // Tuliskan kod di sini yang tidak anda lakukan

  // mahu MiniProfiler berprofil

}

Gunakan MiniProfiler untuk profil pertanyaan ADO.Net

Anda juga boleh menggunakan MiniProfiler untuk profil pertanyaan ADO.Net. Untuk melakukan itu, anda perlu memanfaatkan ProfileDbConnection dan ProfileDbCommand seperti yang ditunjukkan dalam coretan kod di bawah.

menggunakan (SqlConnection sambungan = SqlConnection baru (@ "Sumber Data = JOYDIP \ SQLEXPRESS; Katalog Permulaan = SyncDB; Trusted_Connection = Yes"))

     {

       menggunakan (ProfiledDbConnection berprofilDbConnection = ProfiledDbConnection baru (sambungan, MiniProfiler.Current))

         {

           sekiranya (diprofilkanDbConnection.State! = System.Data.ConnectionState.Open)

               berprofilDbConnection.Open ();

             menggunakan (perintah SqlCommand = SqlCommand baru

              ("Pilih * Dari Pengarang", sambungan))

               {

                 menggunakan (ProfiledDbCommand berprofilDbCommand =

                   ProfiledDbCommand baru (arahan, sambungan,

                     MiniProfiler. Semasa))

                       {                               

                         data var =

                          berprofilDbCommand.ExecuteReader ();

              // Tuliskan kod di sini untuk mengisi senarai Pengarang

                        }

                 }

          }                      

    }

Perhatikan bagaimana ProfileDbConnection dan ProfileDbCommand membungkus objek DbConnection dan DbCommand. Anda boleh mengetahui lebih lanjut mengenai cara membuat profil kod sumber menggunakan MiniProfiler dari laman web MiniProfiler.

MiniProfiler adalah profiler ringkas untuk .Net, Ruby, Go, dan Node.js. Anda boleh menggunakan MiniProfiler untuk profil profil yang dihasilkan oleh Dapper, Linq2SQL, dan Entity Framework. Selain mudah digunakan, MiniProfiler tidak menambahkan banyak overhead pada aplikasi Anda. Anda boleh menggunakan MiniProfiler untuk profil aplikasi dalam pengeluaran tanpa kesan prestasi yang signifikan.