asp.net SAF 中缓存服务的实现第2/5页

 更新时间:2008年08月08日 21:28:49   作者:  
对缓存的兴趣源于张子阳写的一篇文章《SAF 中缓存服务的实现》中的一个例子:

类型接口 
我们先看一下类型的组织,然后再看实现。 

       ICacheStrategy用于定义如何添加、获取、删除欲进行缓存的对象。实际上,在接口的实体类中要明确使用何种类型来存储对象,是Dictionary还是Hashtable或者其他。 
C# 
复制代码 代码如下:

public interface ICacheStrategy {        
    void AddItem(string key, object obj);// 添加对象     
    object GetItem(string key);      // 获取对象     
    void RemoveItem(string key); // 删除对象     
}   
 
       接下来是Cache类,这个类包含了主要的逻辑,包括 动态构建的XML文档、将Xml文档映射到Hashtable 等。
复制代码 代码如下:

public class Cache {     
    void AddItem(string xpath, object obj);     
    object GetItem(string xpath);     
    object[] GetList(string xpath);     
    void RemoveItem(string xpath);     
}  
  
       仅从接口上看,这个类似乎和ICacheStrategy的没有太大分别,实际上,这个类保存了一个对于ICacheStrategy类型实例的引用,最后一步的实际工作,都委托给了ICacheStrategy去完成。而在此之前各个方法的工作主要是由 Xml结点到Hashtable的映射(这里说是Hashtable,是因为它是作者提供的一个默认实现,当然也可以是其他)。 

类型实现 
我们首先看DefaultCacheStrategy,它实现了ICacheStrategy接口,并使用Hashtable存储对象。  

复制代码 代码如下:

public class DefaultCacheStrategy : ICacheStrategy {     
    private Hashtable objectStore;     

    public DefaultCacheStrategy() {     
       objectStore = new Hashtable();     
    }     

    public void AddItem(string key, object obj) {     
       objectStore.Add(key, obj);     
    }     

    public object GetItem(string key) {     
       return objectStore[key];     
    }     

    public void RemoveItem(string key) {     
       objectStore.Remove(key);     
    }     
}    

接下来我们一步步地看Cache类的实现,下面是Cache类的字段以及构造函数(注意为私有)。 Java复制代码
复制代码 代码如下:

public class Cache {     
    private XmlElement rootMap;             // 动态构建的 Xml文档 的根结点     
    private ICacheStrategy cacheStrategy;   // 保存对ICacheStrategy的引用     
    public static readonly Cache Instance = new Cache();  // 实现Singleton模式     
    private XmlDocument doc = new XmlDocument();   // 构建 Xml文档     

    // 私有构造函数,用来实现Singleton模式     
    private Cache() {     
       // 这里应用了Strategy模式。     
       // 改进:可以将使用何种Strategy定义到app.config中,然后使用反射来动态创建类型     
       cacheStrategy = new DefaultCacheStrategy();     

       // 创建文档根结点,用于映射 实际的数据存储(例如Hashtable) 和 Xml文档     
       rootMap = doc.CreateElement("Cache");     

       // 添加根结点     
       doc.AppendChild(rootMap);     
    }     
    // 略...     
}  

相关文章

  • Excel自定义关闭按钮实现代码

    Excel自定义关闭按钮实现代码

    这篇文章主要介绍了Excel自定义关闭按钮实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • .net开发微信公众平台实例教程

    .net开发微信公众平台实例教程

    这篇文章主要介绍了.net开发微信公众平台的方法,对微信公众平台开发的原理与相应的.net实现方法都做了较为详细的讲述,非常实用,需要的朋友可以参考下
    2014-10-10
  • .Net 调用存储过程取到return的返回值

    .Net 调用存储过程取到return的返回值

    存储过程只能返回 int 类型,如果返回一个字符串 ,将会报类型转化错误,下面以示例介绍下如何取到return的值,需要的朋友可以参考下
    2014-08-08
  • ASP.NET C#生成下拉列表树实现代码

    ASP.NET C#生成下拉列表树实现代码

    下拉列表树很方便且时尚的一个导航,貌似很多的朋友都想实现这样一个列表树,本文将满足你们的设想,通过本文你们可以学到如何使用c#生成下拉列表树,感兴趣的你可不要错过了啊
    2013-02-02
  • ASP.NET数据绑定之DataList控件

    ASP.NET数据绑定之DataList控件

    这篇文章主要为大家介绍了ASP.NET数据绑定中的DataList控件,DataList控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,对DataList控件感兴趣的小伙伴们可以参考一下
    2016-01-01
  • ASP.NET Core 3.0轻量级角色API控制授权库

    ASP.NET Core 3.0轻量级角色API控制授权库

    这篇文章介绍了ASP.NET Core 3.0轻量级角色API控制授权库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • ASP.NET Core中如何实现重定向详解

    ASP.NET Core中如何实现重定向详解

    这篇文章主要给大家介绍了关于ASP.NET Core中如何实现重定向的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 用Html5与Asp.net MVC上传多个文件的实现代码

    用Html5与Asp.net MVC上传多个文件的实现代码

    Html 5 的有一些File API,对Form表单增强的特性,让我们轻松支持多文件上传,看下面的Html片断代码
    2012-08-08
  • .NET 中的装箱与拆箱实现过程

    .NET 中的装箱与拆箱实现过程

    本文分别介绍装箱(boxing)与拆箱(unboxing)的实现过程,感兴趣的朋友可以了解下
    2013-01-01
  • ASP.NET DataTable去掉重复行的2种方法

    ASP.NET DataTable去掉重复行的2种方法

    这篇文章主要介绍了ASP.NET DataTable去掉重复行的2种方法,本文直接给出去重代码,需要的朋友可以参考下
    2015-02-02

最新评论