【推荐】捕获WCF服务端与客户端产生的通讯数据并分析
现在很多都在采用WCF做为服务端,在我们的.NET快速开发整合框架(RDIFramework.NET)中也不例外,在采用这种方式时,我们经常需要知道我们的客户端,在访问WCF服务端时,WCF服务端究竟做了那些工作,也就是运行WCF服务端与客户端后,我们想查看WCF服务端与客户端产生通讯数据。如何才能查看产生的通讯数据呢?这就是微软提供的Windows Communication Foundation (WCF) 服务跟踪查看器,它可帮助分析 WCF 侦听器所生成的活动跟踪 (*.svclog) 诊断跟踪为合并、查看和筛选跟踪消息提供了一种简单方法,可以诊断、修复和验证 WCF 服务问题。
在把WCF服务部署到Windows服务时,对于这个服务端其运行的全过程在开发环境下,我们需要予以把握。如何对WCF应用程序的消息进行跟踪呢,本文将.NET快速开发整合框架(RDIFramework.NET)中实际的环境进行模拟整个过程。
一、配置WCF应用程序支持消息的跟踪
要想跟踪WCF应用程序运行过程中的相关信息,我们需要对WCF应用程序进行部署,在.NET快速开发整合框架(RDIFramework.NET),WCF服务默认部署在Windows服务下,服务启动后,如下图所示: 要想捕获软件在运行过程中调用WCF服务所产生的一系列消息,我们首先需要对服务端的App.Config配置文件作相应的更改,如下图所示: 同时,我们还要配置捕获的信息所存放的地方:
通过以上的配置,我们再开启我们的WCF服务,开启后运行软件做一些操作,可以看到在我们:c:\temp\RDIFramework.svclog 下已经记录了相应操作所产生的WCF消息。
二、查看WCF产生的消息
对于WCF的消息跟踪主要有Microsoft Service Trace Viewer(服务跟踪查看器)和tcpTrace这两个。服务跟踪查看器工具功能比较强大可以了解 WCF 侦听器生成的诊断跟踪信息,从而找到错误的根本原因。该工具提供了一种轻松查看、分组和筛选跟踪的方法,以便可以诊断、修复和验证 WCF 服务的问题,但是使用之前需要在服务端作相应的配置(如上,我们的简单配置过程)。tcpTrace其实就是一个通过端口映射来捕获Tcp包的工具使用起来非常简单,由于WCF的很多绑定都会走tcp协议因此使用该工具来捕获数据包会非常方便。下面我们就使用Microsoft Service Trace Viewer(服务跟踪查看器)来查看我们跟踪WCF运行过程所产生的消息。
要打开服务跟踪查看器,可以通过使用命令窗口定位到 WCF 安装位置 (C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin),然后键入 SvcTraceViewer.exe,可以启动服务跟踪查看器。或者按下图操作也可打开服务跟踪查看器:
打开服务跟踪查看器后,我们通过“服务跟踪查看器”打开我们跟踪的消息记录,通过WCF服务端的配置,跟踪的消息记录存放在C:\temp\RDIFramework.svclog,打开后如下图所示:
通过这个窗口,我们可以非常清楚全面的查看整个操作与运行过程,以让我们可以诊断、修复和验证 WCF 服务问题。通过“服务跟踪查看器”,我们可以方便的查看跟踪数据,筛选跟踪数据,查找跟踪的数据,定位跟踪数据等,让我们的服务端应用程序在发布前做这样的评估,可以更加的健壮,当然了,跟踪也是大耗性能的,因此,在正式发布后应该关闭对WCF服务的跟踪。