private void InitialiseCaching(TEnhancedOrgService enhancedService) { if (Parameters.IsCachingEnabled == true) { return; } ObjectCache cache; switch (Parameters.CachingParams.CacheScope) { case CacheScope.Global: case CacheScope.Factory: cache = factoryCache; break; case CacheScope.Service: cache = customCacheFactory == null ? new MemoryCache(Parameters.ConnectionParams.ConnectionString) : customCacheFactory(this, Parameters, enhancedService); break; default: throw new ArgumentOutOfRangeException(nameof(Parameters.CachingParams.CacheScope)); } OrganizationServiceCacheSettings cacheSettings = null; if (Parameters.CachingParams.Offset.HasValue) { cacheSettings = new OrganizationServiceCacheSettings { PolicyFactory = new CacheItemPolicyFactory(Parameters.CachingParams.Offset.Value, Parameters.CachingParams.Priority) }; } if (Parameters.CachingParams.SlidingExpiration.HasValue) { cacheSettings = new OrganizationServiceCacheSettings { PolicyFactory = new CacheItemPolicyFactory(Parameters.CachingParams.SlidingExpiration.Value, Parameters.CachingParams.Priority) }; } enhancedService.Cache = new OrganizationServiceCache(cache, cacheSettings); enhancedService.ObjectCache = cache; }
public OrganizationServiceCache(ObjectCache cache, OrganizationServiceCacheSettings settings) { var cacheSettings = settings ?? new OrganizationServiceCacheSettings(); Cache = cache ?? MemoryCache.Default; Mode = OrganizationServiceCacheMode.LookupAndInsert; ReturnMode = OrganizationServiceCacheReturnMode.Cloned; ConnectionId = cacheSettings.ConnectionId; CacheRegionName = cacheSettings.CacheRegionName; QueryHashingEnabled = cacheSettings.QueryHashingEnabled; CacheEntryChangeMonitorPrefix = cacheSettings.CacheEntryChangeMonitorPrefix; _cacheItemPolicyFactory = cacheSettings.PolicyFactory; this.CacheDependencyCalculator = new CacheDependencyCalculator(cacheSettings.CacheEntryChangeMonitorPrefix); }
internal virtual TEnhancedOrgService CreateEnhancedServiceInternal(bool isInitialiseCrmServices = true, int threads = 1) { var enhancedService = (TEnhancedOrgService)Activator.CreateInstance(typeof(TEnhancedOrgService), parameters); if (parameters.IsTransactionsEnabled) { enhancedService.TransactionManager = new TransactionManager(); } if (parameters.IsCachingEnabled) { ObjectCache cache; switch (parameters.CachingParams.CacheMode) { case CacheMode.Global: case CacheMode.Private: cache = factoryCache; break; case CacheMode.PrivatePerInstance: cache = new MemoryCache(parameters.ConnectionString); break; default: throw new ArgumentOutOfRangeException(nameof(parameters.CachingParams.CacheMode)); } var cacheSettings = new OrganizationServiceCacheSettings { PolicyFactory = new CacheItemPolicyFactory(parameters.CachingParams.Offset, parameters.CachingParams.SlidingExpiration) }; enhancedService.Cache = new OrganizationServiceCache(cache, cacheSettings); enhancedService.ObjectCache = cache; } if (isInitialiseCrmServices) { enhancedService.FillServicesQueue( Enumerable.Range(0, threads).Select(e => CreateCrmService())); } return(enhancedService); }
public virtual TEnhancedOrgService CreateEnhancedService() { var enhancedService = (TEnhancedOrgService)Activator.CreateInstance(typeof(TEnhancedOrgService), parameters); if (parameters.IsTransactionsEnabled) { enhancedService.TransactionManager = new TransactionManager(); } if (parameters.IsCachingEnabled) { ObjectCache cache; switch (parameters.CachingParams.CacheMode) { case CacheMode.Global: case CacheMode.Private: cache = factoryCache; break; case CacheMode.PrivatePerInstance: cache = new MemoryCache(parameters.ConnectionString); break; default: throw new ArgumentOutOfRangeException(nameof(parameters.CachingParams.CacheMode)); } var cacheSettings = new OrganizationServiceCacheSettings { PolicyFactory = new CacheItemPolicyFactory(parameters.CachingParams.Offset, parameters.CachingParams.SlidingExpiration) }; enhancedService.Cache = new OrganizationServiceCache(cache, cacheSettings); enhancedService.ObjectCache = cache; } return(enhancedService); }
private IOrganizationServiceCache CreateDefaultServiceCache(string serviceCacheName = null, string connectionId = null, bool allowDefaultFallback = false) { var section = CrmConfigurationManager.GetCrmSection(); var serviceCacheElement = section.ServiceCache.GetElementOrDefault(serviceCacheName, allowDefaultFallback); var objectCacheName = !string.IsNullOrWhiteSpace(serviceCacheElement.ObjectCacheName) ? serviceCacheElement.ObjectCacheName : serviceCacheElement.Name; var objectCacheElement = section.ObjectCache.GetElementOrDefault(objectCacheName, allowDefaultFallback); var settings = new OrganizationServiceCacheSettings(connectionId) { ConnectionId = connectionId, CacheRegionName = serviceCacheElement.CacheRegionName, QueryHashingEnabled = serviceCacheElement.QueryHashingEnabled, PolicyFactory = objectCacheElement, }; var objectCache = CrmConfigurationManager.CreateObjectCache(objectCacheName, true); var serviceCache = CreateDefaultServiceCache(objectCache, settings); return(serviceCache); }
public CompositeOrganizationServiceCache(ObjectCache cache, OrganizationServiceCacheSettings settings) : this(new OrganizationServiceCache(cache, settings)) { }
protected virtual IOrganizationServiceCache CreateDefaultServiceCache(ObjectCache objectCache, OrganizationServiceCacheSettings settings) { return(new OrganizationServiceCache(objectCache, settings)); }
public PortalBusOrganizationServiceCache(ObjectCache cache, OrganizationServiceCacheSettings settings) : base(cache, settings) { }
public ContentMapOrganizationServiceCache(ObjectCache cache, OrganizationServiceCacheSettings settings) : base(cache, settings) { }
/// <summary> /// Creates a <see cref="IOrganizationServiceCache"/> object. /// </summary> /// <param name="cache"></param> /// <param name="cacheItemPolicyFactory"></param> /// <param name="settings"></param> /// <returns></returns> public IOrganizationServiceCache CreateOrganizationServiceCache(ObjectCache cache = null, OrganizationServiceCacheSettings settings = null) { var obj = CreateDependency( () => new OrganizationServiceCache(cache, settings), cache, settings); if (obj is OrganizationServiceCache) { PreInitialize(obj as OrganizationServiceCache); } return(Initialize(obj)); }