/// <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); } }
/// <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); } }
/// <summary> /// Конструктор. /// </summary> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public CoreCachingClientWithChange( ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) { Cache = cache; CoreCachingResourceErrors = coreCachingResourceErrors; }
/// <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); }
/// <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; }
/// <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); } }
/// <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); } } }
/// <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) ) ); } }
/// <summary> /// Конструктор. /// </summary> /// <param name="resourceErrorsLocalizer">Локализатор ресурсов успехов.</param> public CoreCachingResources( IStringLocalizer <CoreCachingResourceErrors> resourceErrorsLocalizer ) { Errors = new CoreCachingResourceErrors(resourceErrorsLocalizer); }
/// <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 ); }
/// <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 ); }