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

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

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

      一、扩展缓存模块

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

      你可以自定义一种新的后端存储方式,添加一种过期策略,或者是新的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))] 

       

      二、修改模块

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

    •   确保你了解了模块的运行,阅读了相关的文档。
    •   如果你需要添加新的功能模块,而且需要和原来的一些模块一起运行的话,最好修改模块的命名空间,也要修改相关模块的命名空间。
    •   使用签名,使用签名可以保证程序集的唯一性
    •   在修改之后,记得要重新编译企业库的代码
  • 相关阅读:
    使用Python通过docker api控制docker容器
    windows 编译 google v8
    Kali下Metasploit自动连接postgresql
    更新Kali中的metasploit
    spring + mybatis 注解式事务不回滚的原因分析 @Transactional
    ListView中使用type需要注意的东西 java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 addScrapView
    Missing artifact com.sun:tools:jar:1.5.0的解决方案
    0919-The Standard of Code Review
    重定向URL乱码问题
    hive学习_01
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/2287844.html
Copyright © 2011-2022 走看看