代码改变世界

WF 4.0 beta1中的跟踪参与者

2009-07-16 08:43  Windie Chai  阅读(2251)  评论(2编辑  收藏  举报

本文的作者是来自Connected Framework团队的Miguel Susffalich。

在之前的文章中,我们简单的介绍了WF 4.0 beta1中的跟踪机制,并且深入介绍了WF 4.0 beta1的跟踪配置。本文将继续解释跟踪参与者(Tracking Participants)是如何工作的、以及如何使用跟踪参与者来处理和存储工作流放出的跟踪记录。我们还将介绍现成的Event Tracing for Windows(ETW) 跟踪参与者以及如何通过它在事件查看器中查看跟踪记录。

你还可以通过试验下面的示例来获得更多WF 4.0 beta1跟踪机制的动手经验。本文所使用的示例包含在下面的资源中:

  1. WCF and WF samples for .NET 4 Beta 1
  2. ETW tracking participant sample

跟踪参与者概览

正如《WF 4.0 beta1中的跟踪机制》所述,WF 4.0的跟踪基础结构由3个主要的组件构成:

  1. 跟踪记录:由工作流运行时放出。
  2. 跟踪账户:允许你以声明性、灵活的方式来订阅跟踪记录。
  3. 跟踪参与者:直接监听运行时放出的跟踪记录,并以根据选择的方式来处理它们。这种处理包括写入到特定的输出(比如文件、控制台、ETW)、处理/汇总这些记录、或者其他方式的组合。

在WF 4.0 中,多个跟踪参与者可以同时消费跟踪事件。每个跟踪参与者都可以关联到一个不同的跟踪配置。

跟踪参与者用于获取工作流放出的跟踪数据,并将它们存储到不同的媒介中。所以,跟踪记录的任何后期处理也可以通过跟踪参与者来完成。在将来的文章中,我们会介绍WF 4.0跟踪基础结构完整的可扩展性,包括便携自定义跟踪参与者。

现成的ETW跟踪参与者

在.NET 4中,我们内置了一个现成的Event Tracing for Windows(ETW) 跟踪参与者,它可以将跟踪记录输出到ETW。ETW跟踪参与者会将这些记录写入到一个ETW会话中,写入的方式非常高效,对应用性能的影响也非常小。

使用跟踪参与者的优势之一便是可以在Windows事件查看器中查看跟踪记录,就在“应用程序”分类和“系统”分类的旁边。

下面是在Web.config文件中配置ETW跟踪参与者的示例:


<configuration>

<system.web>

<compilation targetFrameworkMoniker=".NETFramework,Version=v4.0"/>

</system.web>

<system.serviceModel>

<diagnostics etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" />

<tracking>

<participants>

<add name="EtwTrackingParticipant"

type
="System.Activities.Tracking.EtwTrackingParticipant, System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

profileName
="HealthMonitoring_Tracking_Profile"/>

</participants>

</tracking>

<behaviors>

<serviceBehaviors>