net - ¿Alternativas gratuitas al perfilador NHibernate?
nhibernate vb net example (4)
El problema con el uso de SQL Profiler es que algunas instrucciones (en particular las inserciones) se muestran individualmente y no hay forma de ver si NHibernate usó el procesamiento por lotes (http://www.codinginstinct.com/2009/08/profiling-nhibernate-batching .html).
NHibernate está utilizando log4net para registrar todas las sentencias sql; esto se puede usar para ver lo que realmente se envía a la base de datos.
<logger name="NHibernate.SQL"
additivity="false">
<level value="ALL" />
<appender-ref ref="rollingFile" />
</logger>
Me pregunto si hay algún otro programa o forma de perfil que no sea el perfilador de NHibernate. Mi prueba se terminó y no hay forma de que pueda comprarla.
Entonces, ¿hay alguna alternativa por ahí?
Existe el Analizador de SQL que viene con SQL Server Management Studio 2005 y 2008. Los uso todo el tiempo y los encuentro invaluables.
También hay un Analizador de SQL para SQL Express en: http://sites.google.com/site/sqlprofiler/
Estos no son exactamente los mismos que el excelente perfilador de NHibernate, pero pueden ser igualmente útiles para reconocer operaciones costosas e ineficientes.
Me preguntaría ... ¿puedes permitirte no comprarlo? Solo cuesta $ 16 por mes en la tarifa de suscripción. Basado en mi prueba inicial con él, hizo una GRAN diferencia en el rendimiento de mi proyecto y me enseñó varias cosas sobre nHibernate que yo no sabía.
Una alternativa bastante buena sería usar el plugin Glimpse
:
Muestra el SQL generado por NHibernate, su pila de llamadas asociada, las estadísticas de fábrica de la sesión, los tiempos de llamada, etc., todo en la parte inferior de la página actual o en una nueva ventana.
Glimpse se puede descargar desde: getglimpse.com
También hay una buena presentación en channel9: The Glimpse Team en Channel 9
Instalación para ASP.NET al 26-Sep-2013 10-Abr-2013
Instalación usando la consola de Package Manager:
PM> Install-Package Glimpse.AspNet
PM> Install-Package NHibernate.Glimpse
Registre su fábrica de sesiones para poder ver las estadísticas globales:
NHibernate.Glimpse.Plugin.RegisterSessionFactory(mySessionFactory);
Ejecute su aplicación web y visite:
http://localhost:8080/Glimpse.axd
Suponiendo que la aplicación se ejecuta en localhost en el puerto 8080.
Desde allí, puede activar / desactivar Glimpse o nombrar la sesión.
Una vez que haya activado Glimpse, aparecerá en las páginas de su sitio minimizadas en la esquina inferior derecha (haga clic en G para abrirlo):
Para usar NHibernate.Glimpse
con llamadas AJAX, debe seleccionar la solicitud que desea inspeccionar dentro de la pestaña ajax, y luego ver los datos en la pestaña NHibernate
como siempre.
Solicitudes AJAX (esta configuración manual ya no es necesaria en la última versión)
Para que funcione con llamadas ajax, debe habilitarlas en función del tipo de contenido de la respuesta en ''Web.config''.
Para el kit de herramientas de control ajax UpdatePanel
el text/plain
tipo de text/plain
contenido:
Se requiere la configuración de Glimpse para ASP.NET WebForms AJAX
Luego debe seleccionar la solicitud que desea inspeccionar dentro de la pestaña ajax.
Notas sobre la instalación de Asp.Net a partir del 9 de abril de 2013:
Instalar usando la consola de Package Manager:
PM> Install-Package NHibernate -Version 3.3.2.4000
PM> Install-Package Glimpse -Version 1.0.0-rc1 -Pre
PM> Install-Package -IgnoreDependencies Glimpse.AspNet -Version 1.0.0-rc1 -Pre
Glimpse.AspNet
debe instalarse con -IgnoreDependencies
para que no actualice Glimpse.Core
a 1.0.1
.
Git Clone NHibernate.Extensions
:
git://github.com/ranzlee/NHibernate.Extensions.git
y agrega el proyecto Nhibernate.Glimpse
a tu solución o crea el proyecto y agrega una referencia dll al mismo.
Agregar a Web.config
:
</configuration>
.
.
.
<appSettings>
<add key="nhibernate-logger" value="NHibernate.Glimpse.LoggerFactory, NHibernate.Glimpse"/>
<add key="NHibernate.Glimpse.Loggers" value="command,connection,flush,load,transaction"/>
</appSettings>
</configuration>
Y asegúrese de haber establecido el providerName
en su cadena de conexión. Ejemplo para el proveedor SqlClient:
<connectionStrings>
<add name="TestDb" providerName="System.Data.SqlClient" connectionString="Server=example.com;database=nhibernate_test;User ID=postgres;Password=password;" />
</connectionStrings>
Y registra tu fábrica de sesiones:
NHibernate.Glimpse.Plugin.RegisterSessionFactory(SessionHolder.SessionFactory);