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
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
 }