【问题标题】:EventSource vs EventProvider事件源与事件提供者
【发布时间】:2017-07-06 23:43:56
【问题描述】:

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

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

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

【问题讨论】:

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

标签: c# .net etw event-viewer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多