Enterprise Library 4.1 Caching Block 图文笔记

image

image

一,下载并安装好Enterprise Library 4.1

二,新建一个Web应用程序

三,右键点击Web.Config 文件 使用 Edit Enterprise Library Configuration 可以编辑Web.Config,建立一个缓存程序块

image

1.可以在Cache Managers 中建立多个缓存管理器,然后设置默认使用哪个管理器

image

2.可以右键为管理器添加一种存储方式,如果不加就是默认的内存存储。

image

3.管理器的名字用来做Key,获取存储区对象

4.保存后,打开Web.config 会看到

<cachingConfiguration defaultCacheManager="Cache Manager">
  <cacheManagers>
    <add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"
      numberToRemoveWhenScavenging="10" backingStoreName="Null Storage"
      type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      name="Cache Manager" />
    <add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"
      numberToRemoveWhenScavenging="10" backingStoreName="Isolated Storage"
      type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      name="Cache Manager1" />
  </cacheManagers>
  <backingStores>
    <add partitionName="IsolatedCache" encryptionProviderName=""
      type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.IsolatedStorageBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      name="Isolated Storage" />
    <add encryptionProviderName="" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      name="Null Storage" />
  </backingStores>
</cachingConfiguration>

四,添加引用

image

using Microsoft.Practices.EnterpriseLibrary.Caching;

using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;

五.写代码(例子我是复制菩提树下的杨过的代码)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Practices.EnterpriseLibrary.Caching;
using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;

namespace CachingBlock
{
  

    public class MyData
    {
        public string Name { set; get; }
        public int Age { set; get; }
        public string Color { set; get; }
    }

    public partial class WebForm1 : System.Web.UI.Page
    {
        const string KEYNAME = "myDateCache";//缓存的键值

        ICacheManager cacheManager;

        protected void Page_Load(object sender, EventArgs e)
        {
            cacheManager = CacheFactory.GetCacheManager();//实例化ICachemanager
        }

        protected void btnWrite_Click(object sender, EventArgs e)
        {
            //生成要缓存的数据(实际开发中可以是从数据库查询出来的数据)
            List<MyData> _list = new List<MyData>{ 
                new MyData(){ Age=1, Color="Yellow", Name="China"},
                new MyData{ Age=2,Color="Black",Name="USA"}
            };

            AbsoluteTime _ExpireTime = new AbsoluteTime(DateTime.Now.AddSeconds(30));//指定30秒后过期

            cacheManager.Add(KEYNAME, _list, CacheItemPriority.Normal, null, _ExpireTime);//加入缓存


            Response.Write("Cache写入完成," + DateTime.Now.ToString());
        }

        protected void btnRead_Click(object sender, EventArgs e)
        {

            this.R1.DataSource = GetCacheData();
            this.R1.DataBind();
            Response.Write("Cache加载完成," + DateTime.Now.ToString());

        }

        /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <returns></returns>
        public List<MyData> GetCacheData()
        {
            List<MyData> _cacheData = cacheManager.GetData(KEYNAME) as List<MyData>;

            if (null == _cacheData)//记得一定要加此判断(因为缓存可能过期)
            {
                //如果缓存数据为空,则重新生成数据,并加入缓存(为检测效果,特地把Color与Name前加了一个"New")
                _cacheData = new List<MyData>
                { 
                new MyData(){ Age=1, Color="New Yellow", Name="New China"},
                new MyData{ Age=2,Color="New Black",Name="New USA"}
                };

                AbsoluteTime _ExpireTime = new AbsoluteTime(DateTime.Now.AddSeconds(30));//指定30秒后过期

                cacheManager.Add(KEYNAME, _cacheData, CacheItemPriority.Normal, null, _ExpireTime);
            }

            return _cacheData;
        }

        protected void btnRemove_Click(object sender, EventArgs e)
        {
            cacheManager.Remove(KEYNAME);
            Response.Write("Cache清空完成," + DateTime.Now.ToString());
        }

    }


}

示例源码下载:EL41Sample.rar

posted @ 2009-10-15 18:02  Sissynong  阅读(453)  评论(0编辑  收藏  举报