详解WF 4.0 beta1中的跟踪参与者
创始人
2024-04-16 14:10:22
0

在之前的文章中,我们简单的介绍了WF 4.0 beta1中的跟踪机制,并且深入介绍了WF 4.0 beta1的跟踪配置。

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

WCF and WF samples for .NET 4 Beta 1

ETW tracking participant sample

跟踪参与者概览

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

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

跟踪记录流程

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

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

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

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

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

  1.  
  2.  
  3.  targetFrameworkMoniker=".NETFramework,Version=v4.0"/> 
  4.  
  5.  
  6.  etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" /> 
  7.  
  8.  
  9.  name="EtwTrackingParticipant" 
  10. type="System.Activities.Tracking.EtwTrackingParticipant, System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
  11. profileName="HealthMonitoring_Tracking_Profile"/> 
  12.  
  13.  
  14.  
  15.  
  16.  name="SampleTrackingSample.SampleWFBehavior"> 
  17.  
  18.  name="EtwTrackingParticipant"/> 
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  

在ETW中,事件是通过Provider Id来写入到ETW会话中的。ETW跟踪参与者所使用的Provider Id定义于Web.config的diagnostics节(在中):

  1.  
  2.  etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" /> 
  3. …  

在没有指定Provider Id时,ETW跟踪参与者会使用一个默认的Provider Id。

跟踪参与者定义于节。每个跟踪参与者都有一个与之关联的配置,藉此来制定它所订阅的跟踪记录:

  1.  
  2. …  
  3.  
  4.  
  5.  name="EtwTrackingParticipant" 
  6. type="System.Activities.Tracking.EtwTrackingParticipant, System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
  7. profileName="HealthMonitoring_Tracking_Profile"/> 
  8.  
  9.  
  10. … 

定义好它们之后,就可以把跟踪参与者添加到服务行为中。这会把选中的跟踪参与者添加到工作流实例的扩展中,它们就这样开始接收跟踪记录了。

为此,我们只需要像这样来使用之前步骤中定义的跟踪参与者名称:

  1.  
  2.  
  3.  name="SampleTrackingSample.SampleWFBehavior"> 
  4.  
  5.  name="EtwTrackingParticipant"/> 
  6.  
  7.  
  8.  
  9.   

下图阐述了跟踪数据经过ETW跟踪参与者的流转过程:

 

跟踪数据经过ETW跟踪参与者的流转过程

一旦跟踪数据到达了ETW会话中,就能够以多种方式来消费它。最常使用的方法之一是通过事件查看器来消费这些事件,事件查看器是一个用来查看来自应用程序和服务的日志与跟踪记录的Windows工具。

在事件查看器中消费来自ETW跟踪参与者的跟踪数据
由ETW跟踪参与者写入到ETW会话中的事件可以被事件查看器消费(当使用默认Provider Id时)。这就允许快速地查看工作流放出的跟踪记录。

在事件查看器中启用跟踪记录的方法如下:

打开事件查看器(eventvwr.exe)

定位到“应用程序和服务日志”>“Microsoft”>“WCF”>“WF-Development”

右键单击并选择“Show Analytic and Debug logs”来启用查看

启用日志

在ETW Tracking Participant Sample中,工作流模拟了出错的情况,ETW跟踪参与者则用来跟踪这个问题。下图显示了事件查看器中的跟踪事件: 

事件查看器中的跟踪事件

所有跟踪记录都拥有从100-112的ETW事件ID。其他事件ID(200-225)则用于其他类型的追踪(Tracing)(比如WCF追踪)。在将来的文章中,我们会全面地介绍与监视数据视图相关的追踪和跟踪事件。

通过EW跟踪参与者放出的跟踪记录还会在事件查看器中显示适当的安全级别。这样就能够很轻松地识别工作流执行过程中出现的任何警告或者错误。

.NET 4.0 beta1通过使用ETW跟踪参与者以及它与事件查看器的集成,使得消费跟踪记录变得又快捷又轻松。

预告

在将来的文章中,我们还会介绍自定义跟踪参与者和如何放出自定义跟踪记录。与此同时,我们也期待您对以下示例和动手实验的反馈:

WCF and WF samples for .NET 4 Beta 1

ETW tracking participant sample

【编辑推荐】

  1. 浅谈WF 4.0 Beta1中的 跟踪机制
  2. WF4.0 Beta1中的规则引擎变化
  3. 浅谈WF 4.0 beta1的跟踪配置
  4. 详解工作流架构与实现
  5. 解析UML工作流管理系统

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...