Требует ли MvcMiniProfiler веб-приложения для работы или может использоваться в чистых библиотеках, например, в модульных тестах?

Мне очень нравится то, что я видел относительно MvcMiniProfiler. Я бы хотел использовать функции мониторинга SQL для не-веб-приложений (службы Windows, модульные тесты и т.д.). Это возможно или требуется среда HTTP? Очевидным отличием будет доставка результатов, но если я смогу сериализовать результаты на JSON или что-то подобное, это будет нормально.

Я собрал простой unit test, пытаясь заставить его работать, но MiniProfiler.Current всегда всегда имеет значение null, даже после выполнения MiniProfiler.Start().

Я здесь лаяю неправильное дерево?

Ответы

Ответ 1

Отличный вопрос. Ядро (экземпляр профайлера и обертки соединения) не привязано к http. Если вы можете создать свой собственный экземпляр, все должно работать. Однако весь код пользовательского интерфейса ориентирован на веб-приложения.

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

Обратите внимание, что MiniProfiler.Current - это просто удобство (вы можете поместить экземпляр в любом месте), но я уверен, что мы создали возможность создать собственную абстракцию (а не http-контекст).

(идет проверка кода)

ах да, вот мы идем:

public static MiniProfiler Current
{
  get
  {
    MiniProfiler.Settings.EnsureProfilerProvider();
    return MiniProfiler.Settings.ProfilerProvider.GetCurrentProfiler();
  }
}

чтобы вы могли предоставить свой собственный ProfileProvider, а затем .Current должен работать.