public void AutoScanDomainCacheStrategyTest() { Config.IsDebug = true; { Console.WriteLine("全局自动扫描"); var addedTypes = CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(true, null); addedTypes.ForEach(z => Console.WriteLine(z)); Assert.IsTrue(addedTypes.Count > 0); Assert.IsTrue(addedTypes.Contains(typeof(TestExtensionCacheStrategy))); //自动扫描程序集:81个,注册总用时:205.7718ms - 598.7549ms } { Console.WriteLine("不自动扫描");// var addedTypes = CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(false, null); addedTypes.ForEach(z => Console.WriteLine(z)); Assert.IsTrue(addedTypes.Count == 0); //注册总用时:0.0021ms } { Console.WriteLine("手动指定"); Func <IList <IDomainExtensionCacheStrategy> > func = () => { var list = new List <IDomainExtensionCacheStrategy>(); list.Add(TestExtensionCacheStrategy.Instance); return(list); }; var addedTypes = CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(false, func); addedTypes.ForEach(z => Console.WriteLine(z)); Assert.IsTrue(addedTypes.Count > 0); Assert.IsTrue(addedTypes.Contains(typeof(TestExtensionCacheStrategy))); //注册总用时:0.574ms } }
public void RegisterAndGetTest() { //»¹ÔĬÈÏ»º´æ״̬ CacheStrategyFactory.RegisterObjectCacheStrategy(() => LocalObjectCacheStrategy.Instance); //×¢²á CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(TestExtensionCacheStrategy.Instance); //»ñÈ¡ //»ñÈ¡µ±Ç°»º´æ²ßÂÔ£¨Ä¬ÈÏΪÄڴ滺´æ£© var objectCache = CacheStrategyFactory.GetObjectCacheStrategyInstance(); var testCacheStrategy = CacheStrategyDomainWarehouse .GetDomainExtensionCacheStrategy(objectCache, new TestCacheDomain()); Assert.IsInstanceOfType(testCacheStrategy, typeof(TestExtensionCacheStrategy)); var baseCache = testCacheStrategy.BaseCacheStrategy(); Assert.IsInstanceOfType(baseCache, objectCache.GetType()); //дÈë var testStr = Guid.NewGuid().ToString(); baseCache.Set("TestCache", testStr); //¶ÁÈ¡ var result = (testCacheStrategy as TestExtensionCacheStrategy).GetTestCache("TestCache"); Assert.AreEqual(testStr, result); }
/// <summary> /// 开始 Senparc.CO2NET 初始化参数流程 /// </summary> /// <param name="registerService"></param> /// <param name="autoScanExtensionCacheStrategies">是否自动扫描全局的扩展缓存(会增加系统启动时间)</param> /// <param name="extensionCacheStrategiesFunc"><para>需要手动注册的扩展缓存策略</para> /// <para>(LocalContainerCacheStrategy、RedisContainerCacheStrategy、MemcacheContainerCacheStrategy已经自动注册),</para> /// <para>如果设置为 null(注意:不适委托返回 null,是整个委托参数为 null),则自动使用反射扫描所有可能存在的扩展缓存策略</para></param> /// <returns></returns> public static IRegisterService UseSenparcGlobal(this IRegisterService registerService, bool autoScanExtensionCacheStrategies = false, Func <IList <IDomainExtensionCacheStrategy> > extensionCacheStrategiesFunc = null) { //注册扩展缓存策略 CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(autoScanExtensionCacheStrategies, extensionCacheStrategiesFunc); return(registerService); }
public void ClearRegisteredDomainExtensionCacheStrategiesTest() { //添加领域缓存 CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(TestExtensionCacheStrategy.Instance); var objectCache = CacheStrategyFactory.GetObjectCacheStrategyInstance(); var testCacheStrategy = CacheStrategyDomainWarehouse .GetDomainExtensionCacheStrategy(objectCache, new TestCacheDomain()); Assert.IsInstanceOfType(testCacheStrategy, typeof(TestExtensionCacheStrategy)); //清除领域缓存 CacheStrategyDomainWarehouse.ClearRegisteredDomainExtensionCacheStrategies(); try { testCacheStrategy = CacheStrategyDomainWarehouse .GetDomainExtensionCacheStrategy(objectCache, new TestCacheDomain()); } catch (UnregisteredDomainCacheStrategyException ex) { Console.WriteLine("以下异常抛出才是正确的\r\n========\r\n"); Console.WriteLine(ex);//未注册 } catch (Exception ex) { Assert.Fail(ex.Message); } }
public void RegisterAndGetTest() { //还原默认缓存状态 CacheStrategyFactory.RegisterObjectCacheStrategy(() => LocalObjectCacheStrategy.Instance); //注册 CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(TestExtensionCacheStrategy.Instance); //获取 //获取当前缓存策略(默认为内存缓存) var objectCache = CacheStrategyFactory.GetObjectCacheStrategyInstance(); var testCacheStrategy = CacheStrategyDomainWarehouse .GetDomainExtensionCacheStrategy(objectCache, new TestCacheDomain()); Assert.IsInstanceOfType(testCacheStrategy, typeof(TestExtensionCacheStrategy)); var baseCache = testCacheStrategy.BaseCacheStrategy(); Assert.IsInstanceOfType(baseCache, objectCache.GetType()); //写入 var testStr = Guid.NewGuid().ToString(); baseCache.Set("TestCache", testStr); //读取 var result = (testCacheStrategy as TestExtensionCacheStrategy).GetTestCache("TestCache"); Assert.AreEqual(testStr, result); }
/// <summary> /// 开始YoYo Senparc.CO2NET SDK 初始化参数流程 /// /// (关于 UseYoYoSenparc() 的更多用法见 CO2NET Demo 中的 UseSenparcGlobal:https://github.com/Senparc/Senparc.CO2NET/blob/master/Sample/Senparc.CO2NET.Sample.netcore/Startup.cs) /// </summary> /// <param name="senparcSetting"></param> /// <param name="contentRootPath">提供网站根目录(env.ContentRootPath,env类型为IHostingEnvironment)</param> /// <param name="autoScanExtensionCacheStrategies">是否自动扫描全局的扩展缓存(会增加系统启动时间)</param> /// <param name="extensionCacheStrategiesFunc"> /// <para>需要手动注册的扩展缓存策略</para> /// <para>(LocalContainerCacheStrategy、RedisContainerCacheStrategy、MemcacheContainerCacheStrategy已经自动注册),</para> /// <para>如果设置为 null(注意:不是委托返回 null,是整个委托参数为 null),则自动使用反射扫描所有可能存在的扩展缓存策略</para> /// </param> /// <returns></returns> public static IRegisterService UseYoYoSenparcCO2NET( this SenparcSetting senparcSetting, string contentRootPath = "", bool autoScanExtensionCacheStrategies = false, Func <IList <IDomainExtensionCacheStrategy> > extensionCacheStrategiesFunc = null) { var registerService = YoyoAbpWechatRegisterService.Start(senparcSetting, contentRootPath); CacheStrategyDomainWarehouse.AutoScanDomainCacheStrategy(autoScanExtensionCacheStrategies, extensionCacheStrategiesFunc); return(registerService); }
/// <summary> /// 向底层缓存注册当前缓存策略 /// </summary> /// <param name="extensionCacheStrategy"></param> public void RegisterCacheStrategyDomain(IDomainExtensionCacheStrategy extensionCacheStrategy) { CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(extensionCacheStrategy); }
public void RegisterCacheStrategyDomain(IDomainExtensionCacheStrategy extensionCacheStrategy) { CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(extensionCacheStrategy);//对于可以重用的方法,可以考虑做一个基类 }
///<summary> /// LocalCacheStrategy的构造函数 ///</summary> TestExtensionRedisCacheStrategy() { //向底层缓存注册当前缓存策略 CacheStrategyDomainWarehouse.RegisterCacheStrategyDomain(this); }