EventSource против EventProvider

Каковы основные различия между EventSource и EventProvider?

Насколько я понимаю, оба класса являются поставщиками событий для ETW. Если между ними нет принципиальных различий, то каковы плюсы и минусы.

Я использую класс EventSource просто потому, что я нашел больше примеров/документации в Интернете, и мне показалось более простым реализовать поддержку канала (запись в каналы по умолчанию в средстве просмотра событий — административный, рабочий, аналитический и отладочный), потому что класс EventRegister автоматически создает манифест (описанный здесь).


person FalacyNine    schedule 17.02.2017    source источник
comment
хороший вопрос. похоже, что класс Provider был первой попыткой сделать ETW пригодным для использования в .net (добавлен в 3.5, а EventSource — в 4.5). Но это только предположения   -  person magicandre1981    schedule 17.02.2017


Ответы (1)


В .NET 3.5 класс EventProvider был единственным вариантом трассировки с помощью ETW. Как указано в документации, вы должны создать файл инструментального манифеста для своих пользовательских событий, который описывает типы данных внутри ваших сообщений. Это не такая простая задача, и она требует использования отдельных инструментов, таких как генератор манифеста (ecmangen.exe). Для получения дополнительной информации см. этот пост.

Класс EventSource был добавлен в .NET 4.5 и представил более простой подход к написанию собственных событий с помощью ETW. Вместо того, чтобы создавать эти файлы манифеста, они автоматически создаются для вас, экономя накладные расходы.

Я не вижу причин использовать EventProvider, учитывая вышеизложенное. Как вы упомянули, EventSource более документирован и намного проще в использовании.

person Tomer    schedule 19.02.2017