EventSource vs EventProvider

问题描述:

EventSourceEventProvider类之间的主要区别是什么?EventSource vs EventProvider

我知道这两个类都是ETW的事件提供者。如果两者不存在重大差异,那么有什么优点和缺点。

我使用EventSource类是因为我在网上发现了更多的示例/文档,并且实现Channel支持(写入事件查看器中的默认通道 - 管理,操作,分析和调试)似乎更直接,因为EventRegister类自动创建清单(描述为here)。

+0

好问题。看起来像Provider类是第一次尝试使ETW在.net中可用(在3.5中添加,而EventSource在4.5中添加)。但是,只是猜测 – magicandre1981

在.NET 3.5中,EventProvider类是使用ETW进行跟踪的唯一选项。正如documentation所述,您必须为您的自定义事件创建一个Instrumentation Manifest文件,该文件描述了消息中的数据类型。这不是那么容易的任务,它需要使用单独的工具,例如Manifest Generator(ecmangen.exe)。欲了解更多信息,请参阅this post

在.NET 4.5中增加了EventSource类,它引入了simpler approach来使用ETW编写自己的事件。而不是创建这些清单文件,它们会自动为您创建,节省开销。

我没有看到任何理由使用EventProvider给出上述。正如你所提到的,EventSource是更多的文件记录和使用更容易。