扩展和修改 Enterprise Library 缓存应用程序块

在它的原始状态中,缓存应用程序块在典型的缓存情况下工作得很好,然而,许多时候你不得不定制应用程序块的某些行为以更好的适用于应用程序的特定环境。在此有二种方法可以用来定制:扩展和修改。

扩展应用程序块

可以通过指定扩展点来扩展应用程序。通常,可以定制一个实现了特定接口或从一个抽象类派生出的类。因为那些定制类存在于你的应用程序空间中,所以不用修改或重建应用程序块,而是使用配置设置来指定扩展点。

可以用添加一个新的后端存储类型或新的到期策略来扩展应用程序块。更多信息,请参见添加新的后端存储和添加新的到期策略。

修改应用程序块

可以通过改变应用程序块的源代码来修改它,这可能也可能不需要相关配置的改变。因为修改是相对于源代码的,所以在修改起作用之前必须重建应用程序块。同样也必须准备处理支持和版本发布。更多信息,请参见修改缓存应用程序块。

添加新的后端存储

要添加一个新的后端存储,可以实现一个实现了 IBackingStore 接口或者从 BaseBackingStore 抽象类继承的类。必须保证你的实现在任何操作访问后端存储时如果发生异常,后端存储也依然是完整的。

因为 Cache 对象的操作方法,要保证任何后端存储都要以单线程的方式被调用。这意味着你的实现可以不是线程安全的。

添加新的到期策略

缓存应用程序块允许添加自己的到期策略,可以构建一个实现了下列接口的新类来完成此目的:

ICacheItemExpiration

此接口让开发人员实现他们自己的到期模式。它是一个应用定义的管理一个CacheItem 对象如何以及何时可以到期的规则的接口。

ICacheItemRefreshAction

此接口刷新一个过期的缓存条目。

ICacheItemRefreshAction 接口定义了必须实现的创建一个对象的规约,这个对象刷新来自缓存的到期的条目。实现的类必须是可序列化的。在实现此接口时,确认它仅维护有关它的环境需要的状态量,因为环境的所有部分都将被序列化,维护过多的状态将导致巨大的对象图。

修改缓存应用程序块

缓存应用程序块为用于各种应用程序和通用目的的缓存而设计,扩展点可以使你适配应用程序块满足任何特殊应用程序的需求。然而,如果要添加新的特性到应用程序块中,就可以修改其源代码来达到目的(安装程序包含了源代码和二进制)。在这种情况下,将按照下列建议来修改。

修改缓存应用程序块的建议

在修改源代码时,下面是最好的实践经验:

  • 通过阅读文档中的缓存应用程序块设计节来确认你理解了应用程序块是如何工作的。

  • 如果显著的改变了源代码,或者要将应用程序块的定制版本与原始版本一起使用的话,考虑改变缓存应用程序块的命名空间。请注意,修改应用程序块的命名空间将需要修改所有使用了缓存应用程序块的其他应用程序块和应用程序的命名空间。

  • 使用强名称。强名称可以唯一标识程序集、版本和验证完整性。这将不得不生成自己的密钥对来签名修改了的应用程序块版本。更多信息,请参见强命名程序集和版本指南。另一种选择是,可以选择不签名定制的版本,这可以被引用为弱名称。

  • 要使修改起作用,必须重新编译修改后的源代码。

posted @ 2007-10-30 00:27  Dorian Deng  阅读(1846)  评论(4编辑  收藏  举报