在剥离的过程中,我去除了BackingStoreImplementations下的大部分,去除了Instrumentation的全部 去除了原本必须依赖配置文件才能使用的。
现在的功能只能依赖内存来作缓存,修改常量来影响缓存行为。
但是不依赖配置文件,可以很达到简单的融入自己的框架。
由于昨天没时间测试迁移的代码,所以没有发布代码
目前只支持 AbsoulteTime SlidingTime NeverExpire方式的,至于FileDependency的需要自己集成一个Action,所以没做测试,也没去研究移植后的代码是否可行。
![](/images/cnblogs_com/wildfish/框架内的缓存管理1.jpeg)
在剥离的过程中,我去除了BackingStoreImplementations下的大部分,去除了Instrumentation的全部<用于做日志还有计数器之类用途的> 去除了原本必须依赖配置文件才能使用的。
现在的功能只能依赖内存来作缓存,修改常量来影响缓存行为。
但是不依赖配置文件,可以很达到简单的融入自己的框架。
由于昨天没时间测试迁移的代码,所以没有发布代码
目前只支持 AbsoulteTime SlidingTime NeverExpire方式的,至于FileDependency的需要自己集成一个Action,所以没做测试,也没去研究移植后的代码是否可行。
https://files.cnblogs.com/wildfish/Caching.rar今天测试了一下,觉得没什么问题。
顺便发布了测试代码
using System;
using System.Data;
using NUnit.Framework ;
using FishSky.SystemFrameWork.Caching;
using FishSky.SystemFrameWork.Caching.Expirations;
using FishSky.SystemFrameWork.Base;
using FishSky.Data.Base ;
using System.Threading;
namespace FishSkyTest.SystemFrameworkTest
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// CachingTesting 的摘要说明。
/// </summary>
[TestFixture]
public class CachingTesting
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
private CacheManager manager=CacheFactory.GetCacheManager();
private static string KeyWordToStore1="KeyWordToStore1";
private static string KeyWordToStore2="KeyWordToStore2";
private static string KeyWordToStore3="KeyWordToStore3";
private static string KeyWordToStore4="KeyWordToStore4";
![](/Images/OutliningIndicators/InBlock.gif)
public CachingTesting()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
SetUp#region SetUp
![](/Images/OutliningIndicators/InBlock.gif)
[SetUp]
public void SetUp()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
manager.Flush();
}
![](/Images/OutliningIndicators/InBlock.gif)
#endregion
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
TestTimeSpanCacheAddRemove#region TestTimeSpanCacheAddRemove
![](/Images/OutliningIndicators/InBlock.gif)
[Test]
public void TestTimeSpanCacheAddRemove()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Console.WriteLine("Testing start![](https://www.cnblogs.com/Images/dot.gif)
.");
![](/Images/OutliningIndicators/InBlock.gif)
WhereField wf=new WhereField("Penavicoxm",typeof(string),20,true,false);
wf.FieldValue ="kevin";
![](/Images/OutliningIndicators/InBlock.gif)
SetField sf=new SetField("PenavicoxmSet",typeof(string),30,false);
sf.FieldValue ="kevin.chin";
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
TimeSpan timespan1=new TimeSpan(0,10,0);
TimeSpan timespan2=new TimeSpan(0,0,20);
![](/Images/OutliningIndicators/InBlock.gif)
SlidingTime expiretime1 =new SlidingTime(timespan1);
SlidingTime expiretime2 =new SlidingTime(timespan2);
![](/Images/OutliningIndicators/InBlock.gif)
manager.Add(CachingTesting.KeyWordToStore1,wf,CacheItemPriority.Normal,null,expiretime1);
manager.Add(CachingTesting.KeyWordToStore2,sf,CacheItemPriority.Normal,null,expiretime2);
![](/Images/OutliningIndicators/InBlock.gif)
WhereField cachedWf=manager.GetData(CachingTesting.KeyWordToStore1) as WhereField;
Assert.IsNotNull(cachedWf);
Assert.AreEqual(cachedWf.FieldValue.ToString(),"kevin");
![](/Images/OutliningIndicators/InBlock.gif)
manager.Remove(CachingTesting.KeyWordToStore1);
![](/Images/OutliningIndicators/InBlock.gif)
object obj=manager.GetData(CachingTesting.KeyWordToStore1);
Assert.IsNull(obj);
![](/Images/OutliningIndicators/InBlock.gif)
Console.WriteLine("Testing will sleep 180 seconds![](https://www.cnblogs.com/Images/dot.gif)
.");
![](/Images/OutliningIndicators/InBlock.gif)
Thread.Sleep(180000);
![](/Images/OutliningIndicators/InBlock.gif)
object nullCache2=manager.GetData(CachingTesting.KeyWordToStore2);
Assert.IsNull(nullCache2);
![](/Images/OutliningIndicators/InBlock.gif)
Console.WriteLine("Testing finished!");
}
![](/Images/OutliningIndicators/InBlock.gif)
#endregion
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
TestAbsoluteTime#region TestAbsoluteTime
![](/Images/OutliningIndicators/InBlock.gif)
[Test]
public void TestAbsoluteTime()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
SetField sf2=new SetField("PenavicoxmSet",typeof(string),30,false);
sf2.FieldValue ="kevin.chin";
![](/Images/OutliningIndicators/InBlock.gif)
//each time u wanna test,must change the time to one minute before the test
DateTime refreshDateTime=new DateTime(2006,1,12,10,41,20);
AbsoluteTime expiretime3=new AbsoluteTime(refreshDateTime);
![](/Images/OutliningIndicators/InBlock.gif)
manager.Add(CachingTesting.KeyWordToStore3,sf2,CacheItemPriority.Normal,null,expiretime3);
![](/Images/OutliningIndicators/InBlock.gif)
Assert.IsNotNull(manager.GetData(CachingTesting.KeyWordToStore3));
Thread.Sleep(120000);
Assert.IsNull(manager.GetData(CachingTesting.KeyWordToStore3)) ;
}
![](/Images/OutliningIndicators/InBlock.gif)
#endregion
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
TestNeverExpired#region TestNeverExpired
![](/Images/OutliningIndicators/InBlock.gif)
[Test]
public void TestNeverExpired()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
SetField sf2=new SetField("PenavicoxmSet",typeof(string),30,false);
sf2.FieldValue ="kevin.chin";
![](/Images/OutliningIndicators/InBlock.gif)
manager.Add(CachingTesting.KeyWordToStore4,sf2,CacheItemPriority.Normal,null,null);
![](/Images/OutliningIndicators/InBlock.gif)
Assert.IsNotNull(manager.GetData(CachingTesting.KeyWordToStore4));
![](/Images/OutliningIndicators/InBlock.gif)
Thread.Sleep(120000);
![](/Images/OutliningIndicators/InBlock.gif)
Assert.IsNotNull(manager.GetData(CachingTesting.KeyWordToStore4));
}
![](/Images/OutliningIndicators/InBlock.gif)
#endregion
}
}
![](/Images/OutliningIndicators/None.gif)