检索 Windows Server AppFabric 监控存储的跟踪变量

本示例显示如何使用实体框架检索和反序列化来自 AppFabric 监控数据库中跟踪的工作流变量。您将会了解监控数据库显示的某些公共视图,以便使用。本示例适用于任何应用程序。我们建议使用常见 Windows Server AppFabric 示例应用程序,它是特为 AppFabric 示例而创建的。若要找到此应用程序,请导航到 <samples>\SampleApplication\OrderApplication 文件夹,其中 <samples> 是 AppFabric 示例的安装路径。

备注

提供这些示例仅是为了教育目的。它们不能用于生产环境,并且尚未在生产环境中进行测试。Microsoft 不对这些示例提供技术支持。

先决条件

  • 配置具有监控的 Windows Server AppFabric 安装。

  • AppFabric 中至少托管了一个 WCF 或 WF 服务。

备注

如果服务配置为跟踪复杂类型变量,本示例对监控功能更具有说服性。

如果您从程序集中将跟踪的变量反序列化,请确保将程序集(例如,AppFabric 示例应用程序)作为引用添加到此项目中,以便它可以正确反序列化这些对象。

示例文件

本示例附带以下文件:

  • VS 2010 解决方案结构和支持代码文件

  • TrackedWFVariable.cs

  • Program.cs

设置和运行此示例

  1. 请确保已对变量进行跟踪并存储到监控数据库中。您可以通过检查 WFEventProperties 视图和确保是以行的方式显示,然后进行操作。

  2. 打开本示例附带的 Visual Studio 解决方案。

    Important要点
    请确保您在对 AppFabric 监控数据库具有读取权限的帐户下运行。

  3. 编辑 Program.cs 中的数据库值以便指向所需的数据库。

  4. 编辑传递给 Program.cs 中 AppFabricMonitoringEntities 构造函数的值。默认情况下,它指向 SQL Express 实例。为了简便起见,在该文件的顶部已经包含一个标准的 SQL 实例名称。

  5. 按 F5 生成并运行示例。

了解本示例

Program.cs 使用实体框架查询数据库中最近使用的工作流事件。TrackedWFVariable 类使用实体框架数据上下文进行连接以检索与最近事件相关的任何 WFEventProperty 行。然后,属性反序列化到其原始 .NET 类型。根据进行反序列化对象的类型,此过程不同。

以下类型存储为使用 WFEventProperties 视图值列表式的简单字符串:

  • System.String

  • System.Char

  • System.Boolean

  • System.Int32

  • System.Int16

  • System.Int64

  • System.UInt32

  • System.UInt16

  • System.UInt64

  • System.Single

  • System.Double

  • System.Guid

  • System.DateTimeOffset

  • System.DateTime

通过调用类型定义的静态 Parse 方法,将字符串值传递为参数对这些类型进行反序列化。所有其他类型都会将其值存储在 WFEventProperties 视图的 ValueBlob 列中,并且使用 System.Runtime.Serialization.NetDataContractSerializer 进行反序列化。这要求必须加载声明对类型进行反序列化的程序集。使用此种方式将对象存储在数据库中,以便 SQL 客户端可以轻松查询上述列出的较为简单的类型。

删除本示例

本示例不会保存任何项目。如果需要,可以删除本示例文件

  2011-12-05