Example #1
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="executable">Выполняемое.</param>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="resourceSuccesses">Ресурсы успехов.</param>
        /// <param name="resourceErrors">Ресурсы ошибок.</param>
        /// <param name="dataBaseSettings">Настройки основы данных.</param>
        /// <param name="cacheSettings">Настройки кэширования.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        public ModProductCachingJobItemInsertService(
            Func <ModProductBaseJobItemGetOutput, Task <ModProductBaseJobItemGetOutput> > executable,
            CoreBaseResourceErrors coreBaseResourceErrors,
            ModProductBaseResourceSuccesses resourceSuccesses,
            ModProductBaseResourceErrors resourceErrors,
            DataBaseSettings dataBaseSettings,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            ICoreCachingCache cache,
            CoreCachingResourceErrors coreCachingResourceErrors
            ) : base(executable, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings)
        {
            if (cacheSettings.IsCachingEnabled)
            {
                var client = new CoreCachingClientWithChangeAndRead <ModProductBaseJobItemGetOutput>(
                    "Item.Insert",
                    cacheSettings,
                    cache,
                    coreCachingResourceErrors
                    );

                var tags = new[]
                {
                    dataBaseSettings.Product.DbTableWithSchema,
                    dataBaseSettings.ProductCategory.DbTableWithSchema,
                    dataBaseSettings.ProductFeature.DbTableWithSchema,
                    dataBaseSettings.ProductProductFeature.DbTableWithSchema
                };

                Executable = input => client.ChangeAndRead(() => executable.Invoke(input), tags);
            }
        }
Example #2
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="executable">Выполняемое.</param>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="dataBaseSettings">Настройки основы данных.</param>
        /// <param name="cacheSettings">Настройки кэширования.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        public ModDummyMainCachingJobOptionsDummyManyToManyGetService(
            Func <Task <ModDummyMainBaseCommonJobOptionListGetOutput> > executable,
            CoreBaseResourceErrors coreBaseResourceErrors,
            DataBaseSettings dataBaseSettings,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            ICoreCachingCache cache,
            CoreCachingResourceErrors coreCachingResourceErrors
            ) : base(executable, coreBaseResourceErrors)
        {
            if (cacheSettings.IsCachingEnabled)
            {
                var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseCommonJobOptionListGetOutput>(
                    "Options.DummyManyToMany.Get",
                    cacheSettings,
                    cache,
                    coreCachingResourceErrors
                    );

                var tags = new[]
                {
                    dataBaseSettings.DummyManyToMany.DbTableWithSchema
                };

                Executable = () =>
                {
                    return(client.Read(() => executable.Invoke(), null, tags));
                };
            }
        }
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="executable">Выполняемое.</param>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="resourceSuccesses">Ресурсы успехов.</param>
        /// <param name="resourceErrors">Ресурсы ошибок.</param>
        /// <param name="dataBaseSettings">Настройки основы данных.</param>
        /// <param name="cacheSettings">Настройки кэширования.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        public ModDummyMainCachingJobItemUpdateService(
            Func <ModDummyMainBaseJobItemGetOutput, Task <ModDummyMainBaseJobItemGetOutput> > executable,
            CoreBaseResourceErrors coreBaseResourceErrors,
            ModDummyMainBaseResourceSuccesses resourceSuccesses,
            ModDummyMainBaseResourceErrors resourceErrors,
            DataBaseSettings dataBaseSettings,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            ICoreCachingCache cache,
            CoreCachingResourceErrors coreCachingResourceErrors
            ) : base(executable, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings)
        {
            if (cacheSettings.IsCachingEnabled)
            {
                var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseJobItemGetOutput>(
                    "Item.Update",
                    cacheSettings,
                    cache,
                    coreCachingResourceErrors
                    );

                var tags = new[]
                {
                    dataBaseSettings.DummyMain.DbTableWithSchema,
                    dataBaseSettings.DummyManyToMany.DbTableWithSchema,
                    dataBaseSettings.DummyMainDummyManyToMany.DbTableWithSchema,
                    dataBaseSettings.DummyOneToMany.DbTableWithSchema
                };

                Executable = input => client.ChangeAndRead(() => executable.Invoke(input), tags);
            }
        }
Example #4
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="cache">Кэш.</param>
 /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
 public CoreCachingClientWithChange(
     ICoreCachingCache cache,
     CoreCachingResourceErrors coreCachingResourceErrors
     )
 {
     Cache = cache;
     CoreCachingResourceErrors = coreCachingResourceErrors;
 }
Example #5
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="localStorageHelper">Помощник локального хранилища.</param>
 /// <param name="configSettings">Конфигурационные настройки.</param>
 /// <param name="resourceErrors">Ресурс ошибок.</param>
 public CoreCachingStorageGlobal(
     CoreCachingStorageLocalHelper localStorageHelper,
     ICoreCachingConfigSettings configSettings,
     CoreCachingResourceErrors resourceErrors
     )
 {
     Helper  = new CoreCachingStorageGlobalHelper(localStorageHelper, configSettings, resourceErrors);
     Service = new CoreCachingStorageGlobalService(Helper);
 }
Example #6
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="name">Имя.</param>
 /// <param name="cacheSettings">Настройки кэширования.</param>
 /// <param name="cache">Кэш.</param>
 /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
 public CoreCachingClientWithChangeAndRead(
     string name,
     ICoreCachingCommonClientConfigSettings cacheSettings,
     ICoreCachingCache cache,
     CoreCachingResourceErrors coreCachingResourceErrors
     )
 {
     Name                      = cacheSettings.CacheKeyPrefix + name;
     ConfigSettings            = cacheSettings;
     Cache                     = cache;
     CoreCachingResourceErrors = coreCachingResourceErrors;
 }
Example #7
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="memoryCache">Кэш в памяти.</param>
        /// <param name="configSettings">Конфигурационные настройки.</param>
        /// <param name="resourceErrors">Ресурс ошибок.</param>
        public CoreCachingStorages(
            IMemoryCache memoryCache,
            ICoreCachingConfigSettings configSettings,
            CoreCachingResourceErrors resourceErrors
            )
        {
            Local = new CoreCachingStorageLocal(memoryCache, configSettings);

            if (configSettings.IsGlobalStorageEnabled)
            {
                Global = new CoreCachingStorageGlobal(Local.Helper, configSettings, resourceErrors);
            }
        }
Example #8
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="resourceErrors">Ресурс ошибок.</param>
        /// <param name="storages">Хранилища.</param>
        public CoreCachingCache(CoreCachingResourceErrors resourceErrors, CoreCachingStorages storages)
        {
            ResourceErrors = resourceErrors;

            IsEnabled = Storages != null;

            if (IsEnabled)
            {
                GlobalStorageHelper  = Storages?.Global?.Helper;
                GlobalStorageService = Storages?.Global?.Service;
                LocalStorageService  = Storages?.Local?.Service;

                IsFaulty = GlobalStorageHelper != null && GlobalStorageHelper.IsFaulty;
            }
        }
        /// <summary>
        /// Ядро. Кэширование. Расширение. Вызвать. Изменение.
        /// При этом из кэша удаляются те данные, чей ключ содержит указанные тэги.
        /// </summary>
        /// <param name="func">Функция изменения.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="tags">
        /// Тэги, по которым будет производиться поиск ключей удаляемых из кэша данных.
        /// </param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        /// <returns>Задача, возвращаемая функцией изменения.</returns>
        public static async Task CoreCachingExtInvokeChange(
            this Func <Task> func,
            ICoreCachingCache cache,
            IEnumerable <string> tags,
            CoreCachingResourceErrors coreCachingResourceErrors
            )
        {
            await func.Invoke().CoreBaseExtTaskWithCurrentCulture(false);

            if (cache != null && cache.IsEnabled && tags != null && tags.Any())
            {
                if (!await cache.InvalidateAsync(tags).CoreBaseExtTaskWithCurrentCulture(false))
                {
                    throw new CoreCachingExceptionCantInvalidate(coreCachingResourceErrors);
                }
            }
        }
Example #10
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="executable">Выполняемое.</param>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="dataBaseSettings">Настройки основы данных.</param>
        /// <param name="cacheSettings">Настройки кэширования.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        public ModProductCachingJobListGetService(
            Func <ModProductBaseJobListGetInput, Task <ModProductBaseJobListGetOutput> > executable,
            CoreBaseResourceErrors coreBaseResourceErrors,
            DataBaseSettings dataBaseSettings,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            ICoreCachingCache cache,
            CoreCachingResourceErrors coreCachingResourceErrors
            ) : base(executable, coreBaseResourceErrors)
        {
            if (cacheSettings.IsCachingEnabled)
            {
                var client = new CoreCachingClientWithChangeAndRead <ModProductBaseJobListGetOutput>(
                    "List.Get",
                    cacheSettings,
                    cache,
                    coreCachingResourceErrors
                    );

                var tags = new[]
                {
                    dataBaseSettings.Product.DbTableWithSchema
                };

                Executable = input =>
                {
                    var keys = new object[]
                    {
                        input.DataObjectProductCategoryName,
                        input.DataObjectProductCategoryIds,
                        input.DataObjectProductCategoryId,
                        input.DataName,
                        input.DataIds,
                        input.DataPageNumber,
                        input.DataPageSize,
                        input.DataSortField,
                        input.DataSortDirection
                    };

                    return(client.Read(() => executable.Invoke(input), keys, tags));
                };
            }
        }
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="executable">Выполняемое.</param>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="dataBaseSettings">Настройки основы данных.</param>
        /// <param name="cacheSettings">Настройки кэширования.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
        public ModDummyMainCachingJobItemGetService(
            Func <ModDummyMainBaseJobItemGetInput, Task <ModDummyMainBaseJobItemGetOutput> > executable,
            CoreBaseResourceErrors coreBaseResourceErrors,
            DataBaseSettings dataBaseSettings,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            ICoreCachingCache cache,
            CoreCachingResourceErrors coreCachingResourceErrors
            ) : base(executable, coreBaseResourceErrors)
        {
            if (cacheSettings.IsCachingEnabled)
            {
                var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseJobItemGetOutput>(
                    "Item.Get",
                    cacheSettings,
                    cache,
                    coreCachingResourceErrors
                    );

                var tags = new[]
                {
                    dataBaseSettings.DummyMain.DbTableWithSchema,
                    dataBaseSettings.DummyManyToMany.DbTableWithSchema,
                    dataBaseSettings.DummyMainDummyManyToMany.DbTableWithSchema,
                    dataBaseSettings.DummyOneToMany.DbTableWithSchema
                };

                Executable = input =>
                {
                    var keys = new object[]
                    {
                        input.DataId,
                        input.DataName
                    };

                    return(client.Read(() => executable.Invoke(input), keys, tags));
                };
            }
        }
        /// <summary>
        /// Конструктор помощника для глобального хранилища.
        /// </summary>
        /// <param name="helper">Помощник для локального хранилища.</param>
        /// <param name="configSettings">Конфигурационные настройки.</param>
        public CoreCachingStorageGlobalHelper(
            CoreCachingStorageLocalHelper helper,
            ICoreCachingConfigSettings configSettings,
            CoreCachingResourceErrors coreCachingResourceErrors
            )
        {
            Helper = helper;

            DbIndex = configSettings.DbIndex;

            ChannelPatternForRemoveData    = Helper.CacheKeyPrefix + ".remove.*";
            ChannelPatternForRemoveAllData = Helper.CacheKeyPrefix + ".flush*";

            var options = string.IsNullOrWhiteSpace(configSettings.Hosts)
                ?
                          ConfigurationOptions.Parse(string.Concat(configSettings.Host, ":", configSettings.Port))
                :
                          ConfigurationOptions.Parse(configSettings.Hosts);

            options.AllowAdmin         = true;
            options.Password           = configSettings.Password;
            options.AbortOnConnectFail = false;
            options.ConnectTimeout     = configSettings.ConnectTimeout;

            Connection = ConnectionMultiplexer.Connect(options);

            if (!Connection.IsConnected)
            {
                throw new CoreBaseException(
                          string.Format(
                              coreCachingResourceErrors.GetStringFormatUnableToConnectToRedis(),
                              configSettings.CoreBaseExtJsonSerialize(CoreBaseExtJson.OptionsForLogger)
                              )
                          );
            }
        }
Example #13
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="resourceErrorsLocalizer">Локализатор ресурсов успехов.</param>
 public CoreCachingResources(
     IStringLocalizer <CoreCachingResourceErrors> resourceErrorsLocalizer
     )
 {
     Errors = new CoreCachingResourceErrors(resourceErrorsLocalizer);
 }
Example #14
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param>
 public CoreCachingExceptionCantInvalidate(CoreCachingResourceErrors coreCachingResourceErrors)
     : base(coreCachingResourceErrors.GetStringCantRemoveDataFromCache())
 {
 }
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="cacheSettings">Настройки кэша.</param>
        /// <param name="coreCachingResourceErrors">Ядро. Кэширование. Ресурсы. Ошибки.</param>
        /// <param name="dataBaseSettings">Данные. Основа. Настройки.</param>
        /// <param name="resourceSuccesses">Ресурсы. Успехи.</param>
        /// <param name="resourceErrors">Ресурсы. Ошибки.</param>
        /// <param name="service">Сервис.</param>
        public ModDummyMainCachingJobs(
            CoreBaseResourceErrors coreBaseResourceErrors,
            ICoreCachingCache cache,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            CoreCachingResourceErrors coreCachingResourceErrors,
            DataBaseSettings dataBaseSettings,
            ModDummyMainBaseResourceSuccesses resourceSuccesses,
            ModDummyMainBaseResourceErrors resourceErrors,
            ModDummyMainBaseService service
            )
        {
            JobItemDelete = new ModDummyMainCachingJobItemDeleteService(
                service.DeleteItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemGet = new ModDummyMainCachingJobItemGetService(
                service.GetItem,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemInsert = new ModDummyMainCachingJobItemInsertService(
                service.SaveItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                resourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemUpdate = new ModDummyMainCachingJobItemUpdateService(
                service.SaveItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                resourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobListGet = new ModDummyMainCachingJobListGetService(
                service.GetList,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobOptionsDummyManyToManyGet = new ModDummyMainCachingJobOptionsDummyManyToManyGetService(
                service.GetOptionsDummyManyToMany,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobOptionsDummyOneToManyGet = new ModDummyMainCachingJobOptionsDummyOneToManyGetService(
                service.GetOptionsDummyOneToMany,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );
        }
Example #16
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param>
        /// <param name="cache">Кэш.</param>
        /// <param name="cacheSettings">Настройки кэша.</param>
        /// <param name="coreCachingResourceErrors">Ядро. Кэширование. Ресурсы. Ошибки.</param>
        /// <param name="dataBaseSettings">Данные. Основа. Настройки.</param>
        /// <param name="resourceSuccesses">Ресурсы. Успехи.</param>
        /// <param name="resourceErrors">Ресурсы. Ошибки.</param>
        /// <param name="service">Сервис.</param>
        public ModProductCachingJobs(
            CoreBaseResourceErrors coreBaseResourceErrors,
            ICoreCachingCache cache,
            ICoreCachingCommonClientConfigSettings cacheSettings,
            CoreCachingResourceErrors coreCachingResourceErrors,
            DataBaseSettings dataBaseSettings,
            ModProductBaseResourceSuccesses resourceSuccesses,
            ModProductBaseResourceErrors resourceErrors,
            ModProductBaseService service
            )
        {
            JobItemDelete = new ModProductCachingJobItemDeleteService(
                service.DeleteItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemGet = new ModProductCachingJobItemGetService(
                service.GetItem,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemInsert = new ModProductCachingJobItemInsertService(
                service.SaveItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                resourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobItemUpdate = new ModProductCachingJobItemUpdateService(
                service.SaveItem,
                coreBaseResourceErrors,
                resourceSuccesses,
                resourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobListGet = new ModProductCachingJobListGetService(
                service.GetList,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobOptionsProductFeatureGet = new ModProductCachingJobOptionsProductFeatureGetService(
                service.GetOptionsProductFeature,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );

            JobOptionsProductCategoryGet = new ModProductCachingJobOptionsProductCategoryGetService(
                service.GetOptionsProductCategory,
                coreBaseResourceErrors,
                dataBaseSettings,
                cacheSettings,
                cache,
                coreCachingResourceErrors
                );
        }