• EntLib缓存框架的实现


    (一) 缓存架构

    caching1

    这是官方文档的架构图,图中Cache引用了BackgroundScheduler与实际的有些异议,可以和我自己画的结合起来看。

    caching2

    客户端通过CacheManagerFactory获取配置文件所配置的CacheManager,CacheManager中引用了3个对象,Cache,ExpirationPollTimer,BackgroundScheduler

    Ø Cache是真正的缓存类,用于缓存项目的Add,Remove,并通过IBackingStore获取数据GetData,和保存数据Flush。Cache中保存的是CacheItem,CacheItem引用了ICacheItemExpition和ICahceItemRefreshAction,ICacheItemExpition用于缓存项目的过期策略,是否过期,过期时间等。ICahceItemRefreshAction用户缓存项目的刷新。

    Ø CacheManager引用的ExpirationPollTimer通过一个Timer调用回调方法,调用BackgroundScheduler中的ExpirationTask的DoExpirations查找过期项,移除过期项

    Ø ExpirationTask和ScavengerTask都引用了ICacheOperations,ICacheOperations用于缓存项目过期后缓存项目的操作,ScavengerTask用于标识缓存项目是否需要获取

    (二) 缓存配置

    <configuration>
    	<configSections>
    		<section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings,Microsoft.Practices.EnterpriseLibrary.Caching" />
    	</configSections>
    
    	<cachingConfiguration defaultCacheManager="Default Cache Manager">
    		<backingStores>
    			<add name="inMemory" 
    				type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching" />
    		</backingStores>
    
    		<cacheManagers>
    			<add name="Default Cache Manager" 				
    				type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching"
    				expirationPollFrequencyInSeconds="60"
    				maximumElementsInCacheBeforeScavenging="1000" 
    				numberToRemoveWhenScavenging="10"
    				backingStoreName="inMemory" />
    			<add name="Loading Scenario Cache Manager" 
    				type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching"
    				expirationPollFrequencyInSeconds="60" 
    				maximumElementsInCacheBeforeScavenging="1000" 
    				numberToRemoveWhenScavenging="10"
    				backingStoreName="inMemory" />
    		</cacheManagers>
    	</cachingConfiguration>
    </configuration>

    (三) 缓存使用

    //获取默认的缓存配置

    ICacheManager primitivesCache;
    
    primitivesCache = CacheFactory.GetCacheManager();
    
    cache.Add()…
    
    cache.Remove()…
    
    

    或者获取指定的缓存配置

    readonly ICacheManager cache;
    
    cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager");
    
    cache.Add()…
    
    cache.Remove()…
    
  • 相关阅读:
    Win10下配置Java 环境变量
    css background之设置图片为背景技巧
    让一个图片在div中居中(四种方法)
    js判断是否联网
    css 设置 checkbox复选框控件的对勾√样式
    CSS 实现对号效果
    关于input 的选中,自定义input[type="checkbox"]样式
    前端图片压缩上传(纯js的质量压缩,非长宽压缩)
    vscode: Visual Studio Code 常用快捷键
    Content:"2715",特殊字符和图标
  • 原文地址:https://www.cnblogs.com/jackhuclan/p/2158431.html
Copyright © 2020-2023  润新知