在本节中,将探讨如何使用策略应用块实现即插即用架构。将采用一个实际场景,根据情况为应用程序启用日志记录。
验证应用块(Validation Application Blocks):本文解释了使用验证应用块进行验证所需的16个步骤。
客户端验证(Client side validation):VAB的一个缺点是它仅进行服务器端验证。本文讨论了如何利用VAB进行客户端验证。
动态验证(Dynamic validation):本文解释了如何基于场景构建动态验证。
日志应用块(Logging application block):本文解释了使用日志应用块的五个基本步骤。
数据应用块(Data application block):本文讨论了实现数据应用块所需的四个步骤。
异常应用块(Exception application block):本文解释了如何使用异常应用块记录项目中的异常。
Unity应用块(Unity application block):本文讨论了在DI和IOC中使用Unity应用块。
UIP块(UIP block):本文讨论了使用Microsoft UIP块为Windows和Web实现可重用的导航和工作流。
为了理解策略应用块的真正用途,将采取一个真实场景。没有应用程序是完美的,生产中很可能会有缺陷。在生产中,有完全编译的DLL,这使得追踪错误变得非常困难。可以使用TRACE来找出问题所在。TRACE的一个问题是它不提供详细的信息。从TRACE中,只能知道哪个方法有问题。
下面是一个解决方案,相信有更好的方法可以做到这一点。本文的重点是理解如何使用策略应用块提供的即插即用机制。
将尝试实现一个即插即用机制。项目应用接口调用业务类。当想要启用调试模式时,只需插入日志应用块。日志应用块将开始在事件日志中记录方法调用,可以用它来分析应用程序中的问题。在正常的生产模式下,将移除日志功能。下面的图表将可视化为一个开关,可以插入日志或拔出日志。
为了实现上述解决方案,将使用策略应用块。策略应用块帮助插入可以即时添加和移除的策略。使用企业应用程序UI,您可以添加新策略或移除策略。
为了使类方法能够被策略块监控,需要从接口继承类。对于当前示例,想要监控类clsFireMethods
的方法。您可以看到它从接口IMethods
继承。
现在打开项目的web.config
文件,并添加策略注入块。当您添加策略时,您会看到两个重要的节点:策略节点和处理程序节点。目前,只想在事件查看器中记录方法调用,因此将添加日志处理程序。为了使日志处理程序正常工作,还需要添加日志应用块。现在需要添加这些处理程序何时应该触发。对于当前场景,希望在调用方法时记录firemethod1
调用。因此添加成员名称匹配规则,并将成员名称添加到匹配集合中。
现在都已经设置好了。在代码中,只需要调用PolicyInjection
静态类来创建对象。这个类将相应地绑定处理程序和规则。请注意在代码中添加策略注入命名空间。
一旦您完成了所有操作,测试项目,启用和不启用日志处理程序。每当调用firemethod1
时,您将看到事件记录器中的条目。