65.9K
CodeProject 正在变化。 阅读更多。
Home

使用策略应用程序块实现即插即用架构

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.74/5 (19投票s)

2008 年 10 月 20 日

CPOL

4分钟阅读

viewsIcon

36635

本文介绍如何使用策略应用程序块实现即插即用架构。

目录

引言

在本节中,我们将讨论如何使用策略应用程序块实现即插即用架构。我们将采用一个实际场景,根据具体情况启用应用程序的日志记录功能。

其他应用程序块

  • 验证应用程序块:本文介绍了使用 VAB 进行验证所需的 16 个步骤:验证应用程序块
  • 客户端验证:VAB 的一个缺点是它只进行服务器端验证。本文讨论了如何利用 VAB 进行客户端验证:客户端验证
  • 动态验证:本文介绍了如何在基于场景的基础上构建动态验证:动态验证
  • 日志记录应用程序块:本文介绍了使用日志记录应用程序块的五个基本步骤:日志记录应用程序块
  • 数据应用程序:本文介绍了实现数据应用程序块所需的四个步骤:数据应用程序块
  • 异常应用程序块:本文介绍了如何使用异常应用程序块来记录项目的异常:异常应用程序块
  • Unity 应用程序块:本文介绍了 DI 和 IOC 中的 Unity 应用程序块:Unity 应用程序块
  • UIP 块:本文介绍了使用 Microsoft UIP 块为 Windows 和 Web 实现可重用导航和工作流:UIP 块

问题

为了理解策略应用程序块的实际用途,我们将采用一个真实场景。没有应用程序是完美的,生产环境中很可能出现缺陷。在生产环境中,通常我们只有完全编译的 DLL,要追踪错误将非常困难。我们当然可以使用 TRACE 来深入了解问题。TRACE 的一个问题是我们无法获得详细的信息。通过 Trace,我们只能知道是哪个方法出了问题。

下面是一种解决方案,我相信有更好的方法可以做到。本文的重点在于理解如何使用策略应用程序块提供的即插即用机制。

我们将尝试实现一种即插即用机制。我们项目的应用程序接口调用业务类。当我们想启用调试模式时,只需插入日志记录应用程序块。日志记录应用程序块将在事件日志中开始记录方法调用,我们可以用它来分析应用程序中存在的问题。在正常的生产模式下,我们会移除日志记录功能。下图将此可视化为一个可以插入或拔出日志记录功能的开关。

解决方案

为了实现上述解决方案,我们将使用策略应用程序块。策略应用程序块帮助我们即时添加和删除策略。通过企业应用程序 UI,您可以添加新策略或删除策略。

实现

为了使类方法能够被策略块监控,我们需要让类继承自一个接口。对于当前示例,我们希望监控类 clsFireMethods 的方法。您可以看到我们让它继承自接口 IMethods

现在打开项目的 web.config 文件,并添加策略注入块。添加策略时,您会看到两个重要节点:一个是策略,另一个是处理程序。目前,我们只想将方法调用记录到事件查看器中,所以我们将添加日志记录处理程序。为了让日志记录处理程序正常工作,我们还需要添加日志记录应用程序块。现在我们需要添加何时触发这些处理程序。对于当前场景,我们希望在调用 firemethod1 时将其记录下来。所以我们添加成员名称匹配规则,并在 matches 集合中添加成员名称。

现在我们准备好了。在代码中,我们只需要调用 PolicyInjection 静态类来创建对象。这个类会相应地绑定处理程序和规则。请注意在代码中添加策略注入命名空间。

完成后,测试启用和未启用日志记录处理程序的项目。每当调用 firemethod1 时,您都会在事件日志中看到一条记录。

您可以添加更多处理程序。根据添加处理程序的顺序,它们将按顺序执行。所以它们将从上到下依次执行。

如需进一步阅读,请观看以下面试准备视频和分步视频系列。

© . All rights reserved.