Enterprise Library5.0 缓存使用篇

网上有很多资料讲解怎么使用,主要是在是使用时碰到一个很郁闷的错误,一下内容有摘抄的博友的有自己写的,大家将就看吧。

创建 cachingConfiguration 的配置节处理程序时出错: 未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

这个错误刚开始是以为没有装.net3.5 SP1的事呢,装上也不行,最后发现用EntLibConfig.exe打开他自己生成的config配置文件业报同样的错误,

初步怀疑是生成的config配置文件有问题,在生成一个还是报同样的错误,等生成第三遍的时候在打开没有报错,服务到应用程序目录,一切正常。

简单使用代码:

 1          public  Form1()
 2          {
 3              InitializeComponent();
 4          }
 5 
 6          ICacheManager cacheManager;
 7 
 8           private   void  button1_Click( object  sender, EventArgs e)
 9          {
10              AbsoluteTime _ExpireTime  =   new  AbsoluteTime(DateTime.Now.AddSeconds( 30 )); // 指定30秒后过期
11 
12              cacheManager.Add( " aaa1 " " aaa1_value " , CacheItemPriority.Normal,  null , _ExpireTime); // 加入缓存
13          }
14 
15           private   void  Form1_Load( object  sender, EventArgs e)
16          {
17              cacheManager  =  CacheFactory.GetCacheManager( " Cache Manager " ); // 实例化ICachemanager
18          }
19 
20           private   void  button2_Click( object  sender, EventArgs e)
21          {
22               this .richTextBox1.Text  =  cacheManager.GetData( " aaa1 " ).ToString();
23          }

下面介绍如何使用Microsoft Enterprise Library 5.0中的缓存应用程序模块.

1.下载安装好MicrosoftEnterprise Library 5.0,然后在运行EntLibConfig.exe

    Enterprise Library5.0 缓存使用篇_第1张图片

    Enterprise Library5.0 缓存使用篇_第2张图片

    2.  选择Blocks菜单 ,单击 Add CachingSettings .

      Enterprise Library5.0 缓存使用篇_第3张图片

        配置属性说明:

      Enterprise Library5.0 缓存使用篇_第4张图片

      3.  点击 File 菜单,单击 Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它. 用记事本打开App.config,可以看到如下内容.

      < configuration >
        
      < configSections >
          
      < section  name ="cachingConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"  requirePermission ="true"   />
        
      </ configSections >
        
      < cachingConfiguration  defaultCacheManager ="Cache Manager" >
          
      < cacheManagers >
            
      < add  name ="Cache Manager"  type ="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"
                expirationPollFrequencyInSeconds
      ="60"  maximumElementsInCacheBeforeScavenging ="1000"
                numberToRemoveWhenScavenging
      ="10"  backingStoreName ="NullBackingStore"   />
          
      </ cacheManagers >
          
      < backingStores >
            
      < add  name ="Isolated Storage Cache Store"  type ="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.IsolatedStorageBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"
                encryptionProviderName
      =""  partitionName ="asdfsdf"   />
            
      < add  type ="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"
                name
      ="NullBackingStore"   />
          
      </ backingStores >
        
      </ cachingConfiguration >
      </ configuration >

      EnterpriseLibrary的Cache提供了非常强大的支持,可以设置绝对时间、间隔时间、自定义格式以及文件过期时间来进行相应的更新操作。

              1. 绝对时间过期的缓存:AbsoluteTime

              2. 相对时间过期的缓存:SlidingTime

              3. 自定义格式过期的缓存:ExtendedFormatTime

                 自定义格式为:<Minute> <Hour> <Day of month> <Month> <Day of week>

                 Minute            0-59
                 Hour              0-23
                 Day of month     1-31
                 Month             1-12
                 Day of week       0-6 (Sunday is 0)
                 如:
                 * * * * *    - expires every minute
                 5 * * * *    - expire 5th minute of every hour 
                 * 21 * * *   - expire every minute of the 21st hour of every day
                 31 15 * * *  - expire 3:31 PM every day
                 7 4 * * 6    - expire Saturday 4:07 AM

              4.文件依赖:FileDependency    指定缓存依赖于某一文件
                 FileDependency _fileDep = new FileDependency("R:\\1.txt");//指定缓存依赖于某一文件
                
      写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直

                 有效,反之如果这个文件被修改过了,则缓存立即过期。

              5.永不过期:NeverExpired

      使用如:

      // 绝对时间过期的缓存
       AbsoluteTime _ExpireTime  =   new  AbsoluteTime(DateTime.Now.AddSeconds( 30 )); // 指定30秒后过期

      // 自定义格式过期的缓存
      ExtendedFormatTime expireTime  =   new  ExtendedFormatTime( " 41 11 * * * " );

              Cache以配置文件的方式供用户进行缓存的轮询过期数据的频率、缓存中数据项的多少、清除数据项的多少以及缓存备份的位置。

       1.    expirationPollFrequencyInSeconds: 设置控制后台调度程序多久检查过期条目的定时器。此属性必须是正整数,且是必要的。
       2.    maximumElementsInCacheBeforeScavenging: 设置在清除开始前可以在缓存中的条目的最大数量。此属性必须是正整数,且是必要的。 
       3.    numberToRemoveWhenScavenging: 设置在清除开始时移除的条目的数量,此属性必须是正整数,且是必要的。 
       4.    backingStoreName: 缓存备份的位置

              值得一提的是,expirationPollFrequencyInSeconds属性是控制后台调度程序多久检查过期条目的配置,单位为秒,如果系统经常需要更新数据则可以将此值设置的小一点;ICacheItemExpiration的时间是以UTC的时间来作为标准时间来比较的,北京时间比UTC早8个小时,比如你需要在每天的十二点半让缓存过期,则必须这样设置ExtendedFormatTime("30 4 * * *"), 关于这个问题我本来不知道,以为是Library的Bug,上网也没有找到相关的例子,最后在看了原程序才知道Library是用的UTC来进行比较的。

      你可能感兴趣的:(library)