Esempio n. 1
0
        /// <summary>
        /// Konfigürasyon tablosunun okunması, önbellek yapısında saklanması ve önbelleğin belli bir süre içerisinde yenilenmesini yönetir.
        /// </summary>
        /// <param name="applicationName">Yüklenecek konfigürasyonların bağlı olduğu proje</param>
        /// <param name="connectionStringConfig">Storage bağlantı bilgileri</param>
        /// <param name="refreshInterval">Önbellek yenilenme süresi. (Ms olarak)</param>
        public ConfigurationReader(string applicationName, ConnectionStringConfigModel connectionStringConfig, int refreshInterval)
        {
            if (connectionStringConfig == null)
            {
                throw new ArgumentNullException(nameof(connectionStringConfig));
            }
            if (connectionStringConfig == null)
            {
                throw new ArgumentNullException(nameof(connectionStringConfig));
            }
            if (string.IsNullOrWhiteSpace(applicationName))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(applicationName));
            }
            if (refreshInterval <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(refreshInterval));
            }

            this.ApplicationName = applicationName;
            this.RefreshInterval = TimeSpan.FromMilliseconds(refreshInterval);
            var autoFacBuilder = new AutoFacBuilder(connectionStringConfig, applicationName);

            this.ConfigurationBusiness = autoFacBuilder.Container.Resolve <IConfigurationBusiness>();
            this.RedisManager          = autoFacBuilder.Container.Resolve <IRedisHashManager>();
            this.PrepareConfigurations();
        }
        public void Initialize()
        {
            try
            {
                var connectionStringConfigModel = new ConnectionStringConfigModel
                {
                    MySqlConnectionString = "mysqlconnectionstring",
                    RedisConnectionString = "redisconnectionstring"
                };
                this.ConfigurationReader = new ConfigurationReader("SERVICE-A", connectionStringConfigModel, 100);

                this.ConfigurationBusiness = new ConfigurationBusiness(new ConfigurationRepository(connectionStringConfigModel.MySqlConnectionString));
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);

                throw;
            }
        }
        internal AutoFacBuilder(ConnectionStringConfigModel connectionStringConfig, string applicationName)
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <ConfigurationRepository>()
            .As <IConfigurationRepository>()
            .WithParameter(new TypedParameter(typeof(string), connectionStringConfig.MySqlConnectionString))
            .InstancePerDependency();
            builder.RegisterType <ConfigurationBusiness>()
            .As <IConfigurationBusiness>()
            .InstancePerDependency();
            builder.RegisterType <RedisHashManager>()
            .As <IRedisHashManager>()
            .UsingConstructor(typeof(string), typeof(string))
            .WithParameters(new[]
            {
                new NamedParameter("hashKey", applicationName),
                new NamedParameter("connectionString", connectionStringConfig.RedisConnectionString)
            })
            .SingleInstance();

            this.Container = builder.Build();
        }