.Net 缓存代理类 的初步考虑.

缓存

EntityData为实体数据类
我们这里将实体数据进行缓存,缓存方法是
//从Web.Config取得对缓存过期的设置
ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
//获得缓冲对象
CacheManager cm=CacheManager.GetCacheManager();
存储
cm.Add(EntityKeyCreator.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

此类可以做实体代理类
using Microsoft.ApplicationBlocks.Cache;
/// <summary>
/// 缓冲实体
/// </summary>
/// <param name="entity">实体数据</param>
public static void CacheEntity(EntityData entity)
{
if(entity.IsEmpty)
return;
ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
//获得缓冲对象
CacheManager cm=CacheManager.GetCacheManager();
//存储

cm.Add(ExpireTerm.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

}

ExpireTerm.class
using Microsoft.ApplicationBlocks.Cache;

internal static ICacheItemExpiration[] GetExpirationPolicy()
{
if(Object.Equals(configSetting,null))
{
configSetting = (ICacheItemExpiration[])ConfigurationSettings.GetConfig("TopCoolExpireTerm");
}
return configSetting;
}

internal static string CreateKey(EntityData entity)
{
DataSet ds = new DataSet();
DataColumn[] keyColumns;
if(entity.Tables.Contains(entity.MainTableName))
keyColumns = entity.Tables[entity.MainTableName].PrimaryKey;
else
keyColumns = entity.CurrentTable.PrimaryKey;//
StringBuilder sb = new StringBuilder(entity.EntityTypeName);
//用:分隔实体类列名
for(int i=0;i<keyColumns.Length;i++)
{
sb.Append(":");
sb.Append(entity[keyColumns[i].ColumnName].ToString());
}
return sb.ToString();
}

注意:EntityData从DataSet 继承过来.

时间: 2024-08-29 10:50:12

.Net 缓存代理类 的初步考虑.的相关文章

JDK和CGLIB生成动态代理类的区别

 关于动态代理和静态代理 当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象. 按照代理对象的创建时期不同,可以分为两种: 静态代理:事先写好代理对象类,在程序发布前就已经存在了: 动态代理:应用程序发布后,通过动态创建代理对象. 静态代理其实就是一个典型的代理模式实现,在代理类中包装一个被代理对象,然后影响被代理对象的行为,比较简单,代码就不放了. 其中动态代理又可分为:JDK动态代理和CGLIB代理. 1.JDK动态代理

asp.net下Cache 缓存操作类代码

复制代码 代码如下: using System.Collections.Generic; using System.Web; using System; namespace DataAccess { /// <summary> /// 缓存控制类 /// </summary> public class CacheControl { public static List<string> AllUseCacheKey = new List<string>();

WEB服务代理类的使用

web|web服务   在应用程序和WEB服务之间来回传递包含公共属性和域的类,在处理结构化数据时这个功能很有用:通过创建WEB服务代理类在应用程序内访问WEB服务,其实质是远程WEB服务类的属性和方法的本地代表顺便写出使用流程:1>首先建立一个WEB 服务项目,重新命名一个服务文件:myProductSerivce.asmx2>在myProductSerivce.asmx写代码:写你的WEB 服务方法:如:[WebMethod(CacheDuration=30,Description=&qu

如何创建和使用Web Service代理类

web|创建 如何创建和使用Web Service代理类 Web服务代理是支持.net的编程语言文件,由.net框架提供的WSDL工具自动生成.代理类不包含任何应用程序逻辑.相反,他包含关于如何传递参数和检索结果的传输逻辑,还包含Web服务中的方法及原型列表.代理类可以从任何WSDL文件创建. 可以像访问com对象一样访问Web服务.要访问Web服务,需要从本地计算机上的Web服务的WSDL文档创建代理类..net提供了名为WSDL.exe的工具以自动生成代理类文件.下面详细说明其创建和使用过程

不引用服务而使用WCF,手动编写客户端代理类

前面我写过一个用WCF开发的聊天程序,大家可以翻看前面的博文. 在那个聊天程 序中,我是不引用服务而直接使用WCF.之前没有跟大家说这一知识点,对于初学者朋友来说 ,可能不知道怎么回事. 我们之所以说WCF比一般的Web Service要强大得多,是因为 它要比一般的Web服务要灵活得多,而且它不仅仅能在IIS服务器上运行,其实它可以用很多 种方法来运行,哪怕一个控制台应用程序. 现在,大家可以回忆一下前面我写的<传 说中的WCF>,我上面的例子绝大多数都是控制台应用程序类型的.我们应当把WC

thrift的TTransport层的内存缓存传输类TMemoryBuffer

内存缓存是简单的在内存进行读写操作的一种传输,任何时候想在上面写入数据都是放入缓存中, 任何时候读操作数据也是来至于缓存.内存缓存的分配使用c语言的malloc类函数,分配的长度是需要 长度的两倍,需要考虑这些内存缓存的使用范围. 同样这个类继承至缓存基类TBufferBase,默 认的缓存大小是1024(static const uint32_t defaultSize = 1024;),所有的构造函数都调用函数 initCommon,这个函数实现如下: voidinitCommon(uint

thrift的TTransport层的缓存传输类TBufferedTransport和缓冲基类TBufferBase

本节主要介绍缓冲相关的传输类,缓存的作用就是为了提高读写的效率.Thrift在实现缓存传输的 时候首先建立一个缓存的基类,然后需要实现缓存功能的类都可以直接从这个基类继承.下面就详细分 析这个基类以及一个具体的实现类. 缓存基类TBufferBase 缓存基类就是让传输类所有的读写函 数都提供缓存来提高性能.它在通常情况下采用memcpy来设计和实现快路径的读写访问操作,这些操作 函数通常都是小.非虚拟和内联函数.TBufferBase是一个抽象的基类,子类必须实现慢路径的读写函 数等操作,慢路

ASP.NET缓存处理类实例

 本文实例讲述了ASP.NET缓存处理类.分享给大家供大家参考.具体如下: ASP.NET 缓存处理类. 用法: Just copy this code into a new class file (.cs) and add it to your ASP .NET website. One thing to keep in mind is that data stored in ASP .NET Cache can be accessible across all sessions. So wh

框架-hibernate中的“二级缓存”和“类集合二级缓存”有什么关系和区别?

问题描述 hibernate中的"二级缓存"和"类集合二级缓存"有什么关系和区别? hibernate中的"二级缓存"和"类集合二级缓存"有什么关系和区别?请言简意骇的解释一下这两个呢,可举些小例子,谢谢作答 解决方案 Hibernate的一二级缓存区别