Cómo utilizar MiniProfiler en ASP.Net Core

El rendimiento de las aplicaciones web es una gran preocupación en todo el mundo. Los desarrolladores tienen muchas herramientas que pueden usar para perfilar aplicaciones web y encontrar los cuellos de botella de rendimiento. MiniProfiler es una de esas herramientas, una herramienta simple pero poderosa para crear perfiles de aplicaciones web. MiniProfiler le ayuda a detectar consultas de ejecución lenta, tiempos de respuesta lentos del servidor y más. 

MiniProfiler está disponible para .Net, ASP.Net y ASP.Net Core. Encontrarás la documentación de MiniProfiler en GitHub. Este artículo presenta una discusión sobre MiniProfiler, por qué es útil y cómo podemos usarlo para perfilar las aplicaciones ASP.Net Core MVC y descubrir problemas de rendimiento en nuestras aplicaciones.

Cree un proyecto ASP.Net Core MVC en Visual Studio 2017

En primer lugar, creemos un proyecto ASP.Net Core MVC en Visual Studio. Si Visual Studio 2017 está en funcionamiento en su sistema, siga los pasos que se indican a continuación para crear un proyecto ASP.Net Core MVC.

  1. Inicie el IDE de Visual Studio 2017.
  2. Haga clic en Archivo> Nuevo> Proyecto.
  3. Seleccione “Aplicación web ASP.Net Core (.Net Core)” de la lista de plantillas que se muestra.
  4. Especifique un nombre para el proyecto.
  5. Haga clic en Aceptar para guardar el proyecto.
  6. Se mostrará una nueva ventana, "Nueva aplicación web .Net Core ...".
  7. Seleccione .Net Core como tiempo de ejecución y ASP.Net Core 2.1 (o posterior) de la lista desplegable en la parte superior. Estoy usando .Net Core 2.2.
  8. Seleccione “Aplicación web (Modelo-Vista-Controlador)” como plantilla de proyecto (como se muestra en la Figura 1 a continuación).
  9. Asegúrese de que las casillas de verificación "Habilitar compatibilidad con Docker" y "Configurar para HTTPS" no estén marcadas. No usaremos estas funciones aquí.
  10. Asegúrese de que esté seleccionado "Sin autenticación". Tampoco usaremos la autenticación aquí.
  11. Haga clic en Aceptar. 

Si sigue estos pasos, se creará un nuevo proyecto ASP.Net Core MVC en Visual Studio. Usaremos este proyecto para perfilar la aplicación usando MiniProfiler.

Instalar y configurar MiniProfiler en ASP.Net Core

Para comenzar a trabajar con MiniProfiler, debe instalar el paquete NuGet necesario. Para instalar MiniProfiler en su proyecto, siga los pasos que se indican a continuación.

  1. Seleccione el proyecto en la ventana Explorador de soluciones. 
  2. Haga clic con el botón derecho y seleccione "Administrar paquetes NuGet ..."
  3. Busque el paquete "MiniProfiler.AspNetCore.Mvc". 
  4. Haga clic en "Instalar" para instalar el paquete NuGet. 

Esto instalará el paquete MiniProfiler.AspNetCore.Mvc NuGet en su proyecto. Para comenzar a usar MiniProfiler en su proyecto, deberá configurarlo en la clase Startup. El siguiente fragmento de código muestra cómo puede llamar al método AddMiniProfiler en la instancia de IServiceCollection para agregar MiniProfiler a la canalización.

public void ConfigureServices (servicios IServiceCollection)

        {

            services.AddMiniProfiler (opciones =>

            options.RouteBasePath = "/ profiler"

            );

            // Código habitual

        }

Puede obtener más información sobre las opciones que puede especificar al registrar MiniProfiler con la canalización desde el sitio web de MiniProfiler aquí.

También debe invocar el método UseMiniProfiler en la instancia de IApplicationBuilder para comenzar a usar MiniProfiler en sus controladores y vistas.

Configure public void (aplicación IApplicationBuilder, entorno IHostingEnvironment)

    {

       app.UseMiniProfiler ();

       // Código habitual

    }

A continuación, agregue las siguientes dos líneas dentro de la etiqueta en el archivo _Layout.cshtml.

@using StackExchange.Profiling

@addTagHelper *, MiniProfiler.AspNetCore.Mvc

También debe especificar en qué lugar de la página web debe mostrarse la ventana del MiniProfiler, es decir, la posición de renderizado. Para hacer esto, puede incluir la siguiente declaración dentro de la etiqueta.


  

Use los pasos en MiniProfiler para perfilar el código ASP.Net Core MVC

MiniProfiler le permitirá conocer los tiempos de carga de la página y la información relacionada con el rendimiento de las consultas de la base de datos. Cuando ejecute la aplicación, el resultado aparecerá como en la Figura 2 a continuación. Tenga en cuenta la ventana MiniProfiler en la esquina superior derecha de la pantalla.

Para conocer el tiempo que tarda en ejecutarse una parte específica de su código, puede aprovechar los pasos. El siguiente fragmento de código ilustra cómo se puede lograr.

índice IActionResult público ()

 {

       var miniProfiler = MiniProfiler.Current;

       Lista de autores = nueva Lista ();

       miniProfiler.RenderIncludes (this.HttpContext);

       usando (miniProfiler.Step ("Obtener autores"))

       {

           autores.Agregar (nuevo autor () {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Address = "Hyderabad, India"});

           autores.Añadir (nuevo autor () {Id = 2, FirstName = "Stephen", LastName = "Smith", Address = "NY, USA"});

           autores.Añadir (nuevo Autor () {Id = 3, Nombre = "Anand", Apellido = "Narayanan", Dirección = "Chennai, India"});

           autores.Añadir (nuevo Autor () {Id = 4, Nombre = "Steve", Apellido = "Jones", Dirección = "Londres, Reino Unido"});

       }

           volver Ver (autores);

 }

El siguiente fragmento de código muestra cómo se ve la clase Author mencionada anteriormente.

Autor de clase pública

    {

        public int Id {obtener; conjunto; }

        cadena pública FirstName {get; conjunto; }

        cadena pública LastName {get; conjunto; }

        Dirección de cadena pública {get; conjunto; }

    }

Cuando ejecute la aplicación, observará el tiempo que tarda el paso que definimos como se muestra en la Figura 3 a continuación. La entrada que he resaltado en verde muestra el tiempo necesario para ejecutar el paso "Obtener autores".

Si desea ignorar una parte específica del código de su aplicación de la creación de perfiles, puede especificar el código que se ignorará como se muestra en el fragmento de código a continuación.

usando (MiniProfiler.Current.Ignore ())

{

  // Escribe aquí el código que no quieres

  // quiero que MiniProfiler haga un perfil

}

Utilice MiniProfiler para perfilar las consultas de ADO.Net

También puede usar MiniProfiler para perfilar consultas ADO.Net. Para hacer eso, necesitaría aprovechar ProfileDbConnection y ProfileDbCommand como se muestra en el fragmento de código a continuación.

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

     {

       usando (ProfiledDbConnection profiledDbConnection = new ProfiledDbConnection (conexión, MiniProfiler.Current))

         {

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

               profiledDbConnection.Open ();

             usando (comando SqlCommand = new SqlCommand

              ("Seleccionar * De los autores", conexión))

               {

                 usando (ProfiledDbCommand profiledDbCommand =

                   new ProfiledDbCommand (comando, conexión,

                     MiniProfiler.Current))

                       {                               

                         var data =

                          profiledDbCommand.ExecuteReader ();

              // Escriba aquí el código para completar la lista de Autores

                        }

                 }

          }                      

    }

Observe cómo ProfileDbConnection y ProfileDbCommand envuelven los objetos DbConnection y DbCommand. Puede obtener más información sobre cómo crear perfiles de código fuente utilizando MiniProfiler en el sitio web de MiniProfiler.

MiniProfiler es un generador de perfiles simple para .Net, Ruby, Go y Node.js. Puede usar MiniProfiler para perfilar las consultas generadas por Dapper, Linq2SQL y Entity Framework. Además de ser fácil de usar, MiniProfiler no agrega mucha sobrecarga a sus aplicaciones. Puede utilizar MiniProfiler para perfilar aplicaciones en producción sin un impacto significativo en el rendimiento.