Мне интересно, есть ли какая-то другая программа или способ профилирования, кроме профилировщика NHibernate. Мое судебное разбирательство закончилось, и я не могу позволить себе его купить.
Есть ли там альтернативы?
Мне интересно, есть ли какая-то другая программа или способ профилирования, кроме профилировщика NHibernate. Мое судебное разбирательство закончилось, и я не могу позволить себе его купить.
Есть ли там альтернативы?
Существует SQL Profiler, который поставляется с SQL Server Management Studio 2005 и 2008. Я использую их все время и считаю их бесценными.
Существует также SQL Profiler для SQL Express по адресу: http://sites.google.com/site/sqlprofiler/
Это не совсем то же самое, что и отличный профилировщик NHibernate, но он может быть столь же полезен при распознавании дорогостоящих и неэффективных операций.
Хорошей альтернативой будет использование плагина Glimpse
:
Он отображает SQL, сгенерированный NHibernate, связанный с ним стек вызовов, статистику фабричной сессии, время вызовов и т.д. В нижней части текущей страницы или в новом окне.
Glimpse можно скачать с: getglimpse.com
На 9 канале также есть хорошая презентация: Команда Glimpse на 9 канале.
Установка для ASP.NET по состоянию на 26 сентября 2013 г. 10 апреля 2013 г.
Установка с использованием консоли диспетчера пакетов:
PM> Install-Package Glimpse.AspNet
PM> Install-Package NHibernate.Glimpse
Зарегистрируйте свою фабрику сессий, чтобы увидеть глобальную статистику:
NHibernate.Glimpse.Plugin.RegisterSessionFactory(mySessionFactory);
Запустите ваше веб-приложение и посетите:
http://localhost:8080/Glimpse.axd
Предполагается, что приложение работает на локальном хосте через порт 8080.
Оттуда вы можете включить/выключить Glimpse или назвать сессию.
Как только вы включите Glimpse, он появится на страницах вашего сайта, свернутых в правый нижний угол (нажмите G, чтобы открыть его):
Чтобы использовать NHibernate.Glimpse
с вызовами AJAX, вам нужно выбрать запрос, который вы хотите проверить, на вкладке ajax, а затем просмотреть данные на вкладке NHibernate
как обычно.
Запросы AJAX (эта ручная настройка больше не требуется в последней версии)
Чтобы он работал с вызовами ajax, вам нужно включить их в зависимости от типа содержимого ответа в "Web.config".
Для инструментария управления ajax UpdatePanel
требуется тип содержимого text/plain
:
Краткая настройка, необходимая для ASP.NET WebForms AJAX
Затем вам нужно выбрать запрос, который вы хотите проверить, на вкладке ajax.
Замечания по установке Asp.Net от 9 апреля 2013 года:
Установите с помощью консоли диспетчера пакетов:
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
должен быть установлен с -IgnoreDependencies
чтобы он не обновлял Glimpse.Core
до версии 1.0.1
.
Git Clone NHibernate.Extensions
:
git://github.com/ranzlee/NHibernate.Extensions.git
и либо добавьте проект Nhibernate.Glimpse
в ваше решение, либо создайте проект и добавьте в него ссылку на dll.
Добавить в 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>
И убедитесь, что вы установили providerName
в строке подключения. Пример для провайдера SqlClient:
<connectionStrings>
<add name="TestDb" providerName="System.Data.SqlClient" connectionString="Server=example.com;database=nhibernate_test;User ID=postgres;Password=password;" />
</connectionStrings>
И зарегистрируйте свою фабрику сессий:
NHibernate.Glimpse.Plugin.RegisterSessionFactory(SessionHolder.SessionFactory);
Проблема с использованием SQL Profiler заключается в том, что некоторые операторы (в частности, вставки) отображаются индивидуально, и нет способа увидеть, была ли доработка пакетом NHibernate (http://www.codinginstinct.com/2009/08/profiling- NHibernate-batching.html).
NHibernate использует log4net для регистрации всех операторов sql - это можно использовать для просмотра того, что действительно отправлено в базу данных.
<logger name="NHibernate.SQL"
additivity="false">
<level value="ALL" />
<appender-ref ref="rollingFile" />
</logger>
Я бы спросил себя... можете ли вы позволить себе не покупать его? Это всего лишь $16 в месяц по ставке подписки. Основываясь на моем первоначальном исследовании с ним, он сделал огромную разницу в производительности моего проекта и научил меня нескольким вещам о nHibernate, которого я еще не знал.