Подтвердить что ты не робот

Могу ли я использовать профилировщик mvc mini в консольном приложении?

Как я могу использовать mvc-mini-profiler в консольном приложении С#?

Также интересно, делает ли mvc мини-профайлер фактическую профилированную статистику в левой части каждой веб-страницы или это просто пользовательский код javascript, сделанный вручную?

Я загрузил и запустил образец mvc и не могу найти этот код, который помещает результаты в это всплывающее окно javascript.

4b9b3361

Ответ 2

Основной объект синхронизации (MiniProfiler) должен работать нормально, как и профилированные соединительные крючки и т.д.; однако вам нужно будет:

  • добавьте свой собственный пользовательский интерфейс, чтобы показать результаты
  • определите свою собственную область действия/время жизни (для Интернета это просто - просто http-запрос)
  • предоставить свои собственные привязки для хранения (для этого есть API расширений, который использует http-context по умолчанию IIRC)
  • либо пропустить профилировщик вручную, либо определить разумный способ поиска текущего экземпляра профайлера

Я знаю, что некоторые люди использовали его части для WPF и т.д., поэтому его можно использовать, но IMO может иметь смысл выбирать только те биты, которые имеют смысл, и использовать их для написания специальной библиотеки, которая добавляет некоторые потрясающие возможности.

Ответ 3

MiniProfiler V4 (в настоящее время preerelease) имеет метод RenderPlainText(). Вы можете использовать его непосредственно в консольном или многопоточном асинхронном сервере без каких-либо дополнительных настроек:

public void Foo()
{
    MiniProfiler.Start("Interesting subroutine");
    using (MiniProfiler.Current.Step("Step1"))
    {
        using (MiniProfiler.Current.Step(nameof(AccessDb)))
        {
            AccessDb();
        }
        Thread.Sleep(100);
    }
    using (MiniProfiler.Current.Step("Step2"))
    {
        Thread.Sleep(100);
    }
    MiniProfiler.Stop();
    Console.WriteLine(MiniProfiler.Current.RenderPlainText());
}

Этот фрагмент кода создает следующий вывод:

PCName на 8/2/2017 8:44:36 AM
  Интересная подпрограмма = 309.2мс
> Шаг1 = 204,8 мс
→ AccessDb = 103.8ms (sql = 56.2ms в 2 cmds)
> Шаг 2 = 100,9 мс

Как вы можете видеть, вывод включает краткое резюме пользовательских таймингов (sql в этом случае). Вы можете легко изменить это поведение (например, включить текст команды), предоставив свою собственную версию RenderPlainText().

Для получения дополнительной информации проверьте: