zoukankan      html  css  js  c++  java
  • 微软企业库4.1学习笔记(十九)缓存模块7 扩展和修改缓存模块 Virus

      缓存模块可以满足大部分的缓存使用情形。但是,还是会有你想要自定义一些模块行为,来满足应用特殊需求的时候。你可以通过两个方式来达到目的:

    •   通过缓存模块提供的扩展点,扩展现有功能
    •   修改源代码

      一、扩展缓存模块

      通过设计好的扩展点来扩展应用的功能。典型的方式为,写一个自定义的类,实现某个接口,或者是继承某个抽象类。因为这些自定义类是在你的应用中使用,你不需要修改和重新编译模块。

      你可以自定义一种新的后端存储方式,添加一种过期策略,或者是新的CacheManager。

      1.1添加新的后端存储

      添加一个新类,实现IBackingStore接口,或者是继承自BaseBackingStore类。你一定要在实现的方法中保证,如果在访问后端存储的时候发生意外的话,后端存储仍然完整无缺,可以提供服务。

      因为是Cache操作,可以确保任何对后端存储的操作都是单线程的方式。这意味着在你实现的过程中不用考虑线程安全。

      1.2添加一个新的过期策略

      实现一个新的过期策略,需要添加的类实现下面的接口:  

    •   ICacheItemExpiration,接口允许开发者定义自己的过期规则,定义如何和什么时候一个缓存项CacheItem过期。
    •   ICacheItemRefreshAction,过期之后,可以更新缓存,实现这个接口的类必须可序列化。

      1.3改变默认的CacheManager

      缓存模块中的CacheManager实现了ICaheManager接口。当系统初始化的时候,CacheManager从后端存储中加载数据到内存中,通过它暴露的方法,可以添加项,删除项,获取缓存的数据。

      尽管默认的CacheManager可以满足大部分的应用需要,还是有可能在你的应用有特殊需求的时候,你可以实现自己的CacheManager来修改缓存模块的行为。下面列出一些你可能会需要的功能:

      实现一个分布式的、或者是特殊的缓存方式,支持不同的解决方案,不仅仅是存储和获取数据,通过添加自定义的后端存储也解决不了。

      改变CacheManager加载数据到内存的方式,只加载最常使用的项,或者是按照要求使得加载项最少。

      创建自定义的CacheManager,需要实现ICacheManager接口,还需要添加下面的特性,告诉配置系统这个CacheManager类是可以安装和配置的类。

      [ConfigurationElementType(typeof(CustomCacheManagerData))] 

       

      二、修改模块

      如果你需要修改模块来满足应用的一些特殊需求的话,请参考下面的指导:

    •   确保你了解了模块的运行,阅读了相关的文档。
    •   如果你需要添加新的功能模块,而且需要和原来的一些模块一起运行的话,最好修改模块的命名空间,也要修改相关模块的命名空间。
    •   使用签名,使用签名可以保证程序集的唯一性
    •   在修改之后,记得要重新编译企业库的代码

      未完待续。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    SpringSecurity 3.2入门(8)自定义权限控制数据库设计
    SpringSecurity 3.2入门(7)自定义权限控制介绍
    SpringSecurity 3.2入门(6)简单介绍默认使用的十一个过滤器
    Spring3.2下使用JavaMailSenderImpl类发送邮件
    Java Mail邮件发送的简单实现
    Spring下配置几种常用连接池
    23种设计模式入门之工厂模式
    C# BackgroundWorker的Bug???
    C# BeginInvoke和EndInvoke方法
    c# 高效的线程安全队列ConcurrentQueue
  • 原文地址:https://www.cnblogs.com/virusswb/p/1720816.html
Copyright © 2011-2022 走看看