事件源与事件提供者

EventSource vs EventProvider

EventSource and EventProvider class 之间的主要区别是什么?

我理解 class 这两个都是 ETW 的事件提供者。如果两者没有关键区别,那么优缺点是什么。

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

在 .NET 3.5 中,EventProvider class 是使用 ETW 进行跟踪的唯一选项。作为 documentation states, you must create an Instrumentation Manifest file for your custom events, which describes the data types inside your messages. This is not such easy task, and it requires using separate tools, such as the Manifest Generator (ecmangen.exe). For more information, please see this post.

.NET 4.5 中添加了 EventSource class,它引入了 simpler approach 使用 ETW 编写您自己的事件。无需创建这些清单文件,它们会自动为您创建,从而节省开销。

鉴于上述情况,我看不出有任何理由使用 EventProvider。正如您所提到的,EventSource 有更多文档记录并且更易于使用。