• 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

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

          配置属性说明:

        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来进行比较的。

      1. 相关阅读:
        JQuery Table 合并单元格-解决Bug版本
        SQLServer当数据导入平面文件
        【BZOJ1294】[SCOI2009]围豆豆Bean 射线法+状压DP+SPFA
        【BZOJ3590】[Snoi2013]Quare 状压DP
        【BZOJ4036】[HAOI2015]按位或 FWT
        【BZOJ1502】[NOI2005]月下柠檬树 Simpson积分
        【CF603E】Pastoral Oddities cdq分治+并查集
        【CF891E】Lust 生成函数
        【CF618G】Combining Slimes 概率+矩阵乘法
        【CF633H】Fibonacci-ish II 莫队+线段树
      2. 原文地址:https://www.cnblogs.com/xiangboren/p/2105585.html
      Copyright © 2020-2023  润新知